Heim >Backend-Entwicklung >C++ >Warum schlägt das Code-Snippet fehl, wenn einer „long'-Variablen ein großes Integer-Literal zugewiesen wird, funktioniert aber, wenn „long long' verwendet wird?
Das Verhalten von „long long“ in C/C verstehen
Bei der Arbeit mit ganzzahligen Datentypen in C/C ist es wichtig, Folgendes zu beachten die Nuancen ganzzahliger Darstellungen verstehen. Ein bestimmter Datentyp, „long long“, wirft häufig Fragen zu seinem Verhalten auf.
Beachten Sie den folgenden Codeausschnitt:
#include <stdio.h> int main() { int num1 = 1000000000; long num2 = 1000000000; long long num3; // num3 = 100000000000; long long num4 = ~0; printf("%u %u %u", sizeof(num1), sizeof(num2), sizeof(num3)); printf("%d %ld %lld %llu", num1, num2, num3, num4); return 0; }
Beim Ausführen dieses Codes kann es zu einem Fehler kommen Kommentieren Sie die kommentierte Zeile aus:
// num3 = 100000000000;
Der Fehler lautet:
"Fehler: Ganzzahlkonstante ist zu groß groß für langen Typ“
Wenn Sie den Code jedoch kompilieren und ausführen, ohne diese Zeile zu kommentieren, werden Werte ausgegeben, die deutlich größer als 10000000000 sind. Warum?
Grundlegendes zu ganzzahligen Literalen und Datentypen
In C/C sind Ganzzahlliterale Konstanten, die Zahlen darstellen Werte. Der Typ eines ganzzahligen Literals wird durch ein Suffix bestimmt, beispielsweise „L“ oder „LL“. Ohne Suffix wird das Literal standardmäßig als „int“ behandelt.
Im bereitgestellten Code ist der Wert „100000000000“ zu groß, um in einem „long“-Datentyp dargestellt zu werden. Daher müssen Sie ein Suffix hinzufügen, um den beabsichtigten Datentyp anzugeben.
Das Literal richtig zuweisen
Um den Fehler zu beheben, sollten Sie das Literal mit dem richtigen Suffix zuweisen , wie unten gezeigt:
long long num3 = 100000000000LL;
Das Suffix „LL“ bedeutet, dass das Literal als a behandelt werden soll Typ „long long“, der einen größeren Wertebereich aufnehmen kann.
Die aktualisierte Zeile weist „num3“ den Wert „100000000000“ zu, ohne einen Fehler auszulösen. Dadurch wird sichergestellt, dass die Variable „num3“ den beabsichtigten großen numerischen Wert enthalten und verarbeiten kann.
Das obige ist der detaillierte Inhalt vonWarum schlägt das Code-Snippet fehl, wenn einer „long'-Variablen ein großes Integer-Literal zugewiesen wird, funktioniert aber, wenn „long long' verwendet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!