Wieso wird mein unsigned int negativ?


16.07.2020, 18:20

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

Vom Beitragsersteller als hilfreich ausgezeichnet

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.


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.