Heim > Backend-Entwicklung > C++ > Warum verhalten sich große Ganzzahlliterale in For-Schleifen anders als erwartet?

Warum verhalten sich große Ganzzahlliterale in For-Schleifen anders als erwartet?

Linda Hamilton
Freigeben: 2024-12-14 15:47:11
Original
1000 Leute haben es durchsucht

Why Do Large Integer Literals in For Loops Behave Differently Than Expected?

Typ der Ganzzahlliterale: Standardmäßig nicht int?

Frage:

Warum Eine for-Schleife, die bis zu 10 Milliarden iteriert, dauert länger als eine, die bis zu 1 iteriert Milliarden?

Antwort:

Die Iterationsvariable in der Schleife ist 32-Bit und läuft über, was eine Endlosschleife verursacht. Das Literal, das 10 Milliarden darstellt, wird vom Compiler automatisch in einen passenden Bereich (in diesem Fall mindestens 64-Bit) hochgestuft, obwohl es kein L-Suffix hat.

C :

Gemäß dem C 11-Standard ([lex.icon] ¶2) ist der Typ eines ganzzahligen Literals ohne Suffix der erste von Tabelle 6, in der sein Wert dargestellt werden kann:

Type
int
long int
long long int

Daher wird das Literal in diesem Fall als Long-Int oder Long-Long-Int interpretiert (wenn Long-Int 32-Bit ist).

C:

In C99 ([§6.4.4.1]) ist die Regel ähnlich. Der Typ einer Ganzzahlkonstante wird durch den ersten Typ aus einer ähnlichen Liste bestimmt, in der sein Wert dargestellt werden kann.

Implementierungsdefinierte Typen:

Beide C 11 ( [lex.icon] ¶3) und C99 ([§6.4.4.1 ¶5]) ermöglichen ganzzahlige Literale als „erweiterte ganzzahlige Typen“. (implementierungsspezifische Ganzzahltypen), wenn kein anderer gültiger Typ gefunden wird.

Das obige ist der detaillierte Inhalt vonWarum verhalten sich große Ganzzahlliterale in For-Schleifen anders als erwartet?. 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