Maximaler Wert von unsigned char

8
%Vor%

Warum druckt dieses Programm 256?

So wie ich das verstehe, da 0x80 = 0b10000000 und unsigned char 8 Bits hat, sollte die '1' nach der Linksverschiebung überlaufen und die Ausgabe sollte 0 sein, nicht 256.

    
Variance 30.07.2010, 16:38
quelle

2 Antworten

14

Dies ist ein Ergebnis der C-Integer-Werberegeln. Im Wesentlichen werden die meisten Variablen, die in einen Ausdruck gehen, "befördert", so dass Operationen wie diese die Genauigkeit nicht verlieren. Dann wird es als int in printf übergeben, gemäß den Regeln von C's variablen Argumenten.

Wenn Sie möchten, wonach Sie suchen, müssen Sie in unsigned char :

zurückgeworfen werden %Vor%

Hinweis: Die Verwendung von %c , wie in Stephen's Kommentar angegeben, funktioniert nicht, da %c auch eine ganze Zahl erwartet.

EDIT: Alternativ könnten Sie dies tun:

%Vor%

oder

%Vor%     
Billy ONeal 30.07.2010, 16:51
quelle
0

Vergessen Sie nicht das Format speziell für das Drucken ohne Vorzeichen.

%Vor%     
Paul E. 30.07.2010 17:30
quelle