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.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage