Typauswahl für literale numerische Werte in C
Ich frage mich: Wenn ich versuche, einem einen ganzzahligen Wert zuzuweisenint
Variable (16-Bit-Compiler, 2 Byte für Ganzzahlen) Sagen wir:
int a;
a=40000;
Das kann nicht mit dem Bereich des Typs dargestellt werden, der abgeschnitten wird. Aber was ich sehe, ist, dass der resultierende Wert ina ist das Bitmuster für -25000 (oder eine nahe Zahl), was bedeutet, dass die Binärdarstellung, die der Compiler für die Dezimalzahl 40000 auswählt, eine vorzeichenlose Ganzzahldarstellung war. Und das wirft meine Frage auf: Wie wählt der Compiler den Typ für diesen wörtlichen Ausdruck aus?
Ich vermute, es wird der Typ verwendet, der den Wert mit weniger Speicherplatz verarbeiten kann.