Heim >Backend-Entwicklung >C++ >Wann ist ein Integer-Literal kein „int'?

Wann ist ein Integer-Literal kein „int'?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-17 06:02:24147Durchsuche

When is an Integer Literal Not an `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:

  • long long int
  • long int
  • int

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn