Wenn eine dezimale Konstante verwendet, ohne die Art der Dezimalkonstante beliebiger Suffixe der ersten ist, dass, um die dargestellt werden kann (der aktuelle C-Standard, 6.4.4 Constants p5):
- int
- long int
- long long int
der Typ des ersten Ausdrucks int
, da jede konstante mit dem Wert 1024 und 2 kann als int dargestellt werden. Die Berechnung dieser Konstanten erfolgt im Typ int, und das Ergebnis wird überlaufen.
Angenommen INT_MAX ist gleich 2147483647 und LONG_MAX ist größer als 2147483647, der Typ des zweiten Ausdrucks ist long int
, da dieser Wert nicht als int dargestellt werden kann, aber so lang int sein kann. Wenn INT_MAX gleich LONG_MAX gleich 2147483647 ist, ist der Typ long long int
.
Sind Sie sicher, dass der zweite Wert nicht ['2147483648'] ist (https://www.google.co.in/search?q=1024*1024*1024*2&rlz=1C1GIGM_enIN617IN617&oq=1024*1024*1024*2&aqs = chrome..69i57.1172j0j7 & sourceid = chrome & ie = UTF-8)? –
Wahrscheinlich meinen Sie den Wert '2147483648'. Meine Antwort geht davon aus. – 2501
Hatte repariert worden! Vielen Dank! – mingpepe