Heim > Backend-Entwicklung > C++ > Warum werden vorzeichenlose Ganzzahlliterale in C und C zu größeren Typen heraufgestuft?

Warum werden vorzeichenlose Ganzzahlliterale in C und C zu größeren Typen heraufgestuft?

Patricia Arquette
Freigeben: 2024-12-12 19:30:15
Original
702 Leute haben es durchsucht

Why Do Unsigned Integer Literals in C and C   Promote to Larger Types?

Ganzzahlen ohne Suffixe: Bei Bedarf in größere Typen hochgestuft

Die ursprüngliche Abfrage untersuchte, warum eine Iteration auf 10 Milliarden zu einem unerwarteten Verhalten führte. Ein Verdacht bestand darin, dass Integer-Literale ohne Suffixe möglicherweise nicht standardmäßig den üblichen int-Typ verwenden.

Sowohl in C als auch in C werden solche Literale automatisch zu einem passenden Integer-Typ heraufgestuft. Dadurch wird sichergestellt, dass ihr Wert innerhalb der Grenzen mindestens eines der verfügbaren Ganzzahltypen dargestellt werden kann.

C- und C-Standards

Gemäß dem C 11-Standard ( [lex.icon] ¶2) und dem C99-Standard (§6.4.4.1) erhält ein ganzzahliges Literal ohne Suffix den kleinsten Typ aus der folgenden Liste, der es aufnehmen kann Wert:

  • int
  • long int
  • long long int

Im Fall von 10 Milliarden wäre diese ganzzahlige Konstante klassifiziert als long int (oder long long int, wenn long int definiert ist als). 32-Bit).

Kompilierungsfehler für übermäßig große Literale

Sowohl C99 als auch C 11 geben an, dass Literale, die den darstellbaren Bereich für alle zulässigen Ganzzahltypen überschreiten, zu a führen Kompilierungsfehler. Einige Compiler handhaben dies jedoch möglicherweise auf nicht standardmäßige Weise, z. B. indem sie die überschüssigen Ziffern stillschweigend abschneiden oder verwerfen.

Das obige ist der detaillierte Inhalt vonWarum werden vorzeichenlose Ganzzahlliterale in C und C zu größeren Typen heraufgestuft?. 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