Kurze Verständnisfrage



  • Hallo,
    wie kommt es eigentlich, dass wenn ich

    unsigned 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.


Anmelden zum Antworten