Heim >Backend-Entwicklung >C++ >Wann ist ein Integer-Literal kein „int'?
Typ von Integer-Literalen standardmäßig nicht int
Bei der Programmierung wird normalerweise davon ausgegangen, dass der Typ eines Integer-Literals int ist. Es gibt jedoch Fälle, in denen dies möglicherweise nicht der Fall ist.
Betrachten Sie den folgenden C-Code:
for (i = 0; i < 10000000000; i++)
Obwohl dem Literal 10000000000 kein „L“-Suffix angehängt ist (was explizit der Fall ist). bezeichnet einen Long-Integer-Typ), erkennt der Compiler, dass dieser Wert den Bereich eines 32-Bit überschreitet Ganzzahl.
Gemäß den Standards C99 und C 11 wird der Typ einer Ganzzahlkonstante durch den ersten Eintrag in Tabelle 6 bestimmt, in dem ihr Wert dargestellt werden kann. Für Dezimalkonstanten ohne Suffixe gibt Tabelle 6 die folgenden Typen in absteigender Reihenfolge an:
Daher interpretiert der Compiler im angegebenen Codebeispiel das Literal als long int (oder long long int if long int ist 32 Bit), um seinen großen Wert unterzubringen.
Es ist wichtig zu beachten, dass „zu große“ Literale im Allgemeinen zu einem Kompilierungsfehler führen. Dies liegt daran, dass der Wert durch keinen der zulässigen Typen dargestellt werden kann.
Das obige ist der detaillierte Inhalt vonWann ist ein Integer-Literal kein „int'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!