Heim > Backend-Entwicklung > C++ > Warum werden übermäßig große Ganzzahlliterale in C und C manchmal nicht standardmäßig auf „int' gesetzt?

Warum werden übermäßig große Ganzzahlliterale in C und C manchmal nicht standardmäßig auf „int' gesetzt?

Patricia Arquette
Freigeben: 2024-12-07 17:47:14
Original
529 Leute haben es durchsucht

Why Do Excessively Large Integer Literals in C and C   Sometimes Not Default to `int`?

Integer-Literale: Standardmäßig nicht immer Int

Während der Iteration in einer Schleife können übermäßig große Integer-Literale zu unerwarteten Problemen führen. Normalerweise werden Literale ohne Suffixe als int interpretiert. Diese Annahme gilt jedoch möglicherweise nicht für sehr große Werte.

Überlauf und Heraufstufung

Wenn ein ganzzahliges Literal den Bereich von int (normalerweise 32-Bit) überschreitet, undefiniert Verhalten (UB) kann die Folge sein. In einigen Fällen kann der Compiler das Literal jedoch automatisch in einen größeren Typ hochstufen, z. B. long int (normalerweise 64-Bit).

Standardspezifikationen

Sowohl C- als auch C-Standards regeln die Heraufstufung von Ganzzahlliteralen in geeignete Typen.

  • C: Abschnitt 6.4.4.1 des C99-Standards besagt, dass der Literaltyp der erste ist, in dem sein Wert dargestellt werden kann (d. h. int, long int, long long int) oder bei Bedarf ein erweiterter Integer-Typ.
  • C : Abschnitt [lex.icon] ¶2 des C 11-Standards spezifiziert in ähnlicher Weise die Heraufstufung zu long int oder long long int as benötigt.

Beispiel

Betrachten Sie das ganzzahlige Literal 10000000000. In einer C-Umgebung würde dies als long int interpretiert werden. Wenn es sich beim verwendeten Compiler jedoch um einen 32-Bit-Compiler handelt, kann dies zu einem Kompilierungsfehler führen, da das Literal für die verfügbaren Integer-Typen zu groß ist.

Das obige ist der detaillierte Inhalt vonWarum werden übermäßig große Ganzzahlliterale in C und C manchmal nicht standardmäßig auf „int' gesetzt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage