Wieso wird mein unsigned int negativ?
Vielleicht habe ich mich damit zu wenig beschäftigt,
aber wieso wenn ich einen
unsigned int p = 0;
habe,
wird der nachdem ich
p--; angewandt habe, -1 und nicht 1
Da wird doch gar kein Vorzeichen gespeichert?
Oder ist das die Schuld des Compilers?
Sieht der etwa, das ich hier eigentlich was negatives rausbekommen will, denkt für mich und nimmt das unsigned wieder weg?
2 Antworten
Der Fehler liegt wohl in deiner Ausgabe.
Du gibst p bestimmt so aus...
printf("%d", p);
Allerdings ist "%d" ein Format für signed integer und behandelt deine unsigned int gegebenenfalls anders, als du erwartest.
Für den tatsächlichen, unsigned int-Wert benutze "%u" (unsigned-int-format)
Oder gibst du den Wert gar nicht aus? Bitte um mehr Info.
Habs wohl übersehen das ich den Stern vergeben konnte, aber jetzt hast du ihn ja!
Wahrscheinlich hast du bei der Ausgabe (z.B. mit printf()) ein "signed" Zahlenformat gewählt. Dann wird der Wert als signed interpretiert.
Deine Variable hat nach dem Dekrementieren den Wert FFFFFFFF(hex), und der bedeutet eben -1, wenn man ihn als signed interpretiert.
Das war's super.