Kurze Verständnisfrage
-
Hallo,
wie kommt es eigentlich, dass wenn ichunsigned char a; a = 0xFF; printf("a (%d byte): %x\n",sizeof(a),a+1);
schreibe als Ausgabe "a (1 byte): 100" bekomme? Eigentlich sollte das Ergebnis doch 0x00 sein, da der Überlauf einfach abgeschnitten wird!?
Vielen Dank schon mal!
-
Weil a+1 impliziet nach int gecastet wird. Schreib mal
printf("a (%d byte): %x\n",sizeof(a),(unsigned char)(a+1));
oder
a = a + 1; printf("a (%d byte): %x\n",sizeof(a),a);
Dann kommt auch 0 raus.