C - unsigned
-
Hallo,
ich wollte verhindern, dass man in meiner funktion negative Werte eingeben,
aber es funktioniert trotzdem:
#include <stdio.h>
void funktion ( unsigned ) ;
int main ( void )
{
funktion ( -5 ) ;return 0 ;
}
void funktion ( unsigned int number )
{
printf ( "%d" , number ) ;
}gibt -5 aus
ist das im Parameter also keine Lösung dafür?
-
%d
ist der Formatspecifier für signed int (als Dezimalzahl)Nimm
%u
Und das Bitmuster von -5 hat auch eine Entsprechung als unsigned
-
ok danke.
für %u komm jetzt 42949672911
was bedeutet das?ich habe halt gedacht, dass gar nicht kompiliert wird wenn ich dem Parameter negative Werte zuordne
aber es kommt ja imer noch was rausDeinen zweiten Satz verstehe ich nicht.
aso ok also negative Zahlen habe trotzdem irgendwie unsigned dartstellungen?
-
@JamesNguyen sagte in C - unsigned:
ich habe halt gedacht, dass gar nicht kompiliert wird wenn ich dem Parameter negative Werte zuordne
aber es kommt ja imer noch was rausGarbage in, Garbage out.
Du steckst Müll rein und bekommst Müll raus.Deinen zweiten Satz verstehe ich nicht.
aso ok also negative Zahlen habe trotzdem irgendwie unsigned dartstellungen?Ist dir schon mal am Wertebereich der signed/unsigned Typen etwas aufgefallen?
Beiunsigned char
hast du 256 Werte von 0 bis 255
Beisigned char
hast du 256 Werte von (meist) -128 bis +127
Bei short, int, long und long long ist es entsprechendDabei wird (meist) https://de.wikipedia.org/wiki/Zweierkomplement als Darstellung benutzt.