Heim > Artikel > Backend-Entwicklung > Hat „long' in C garantiert mindestens 32 Bits?
Hat long garantiert 32 Bits?
Trotz allgemeiner Annahmen, die auf dem C-Standard basieren, stellt sich die Frage, ob long garantiert ist mindestens 32 Bit. Der Standard klassifiziert die grundlegenden Integraltypen wie folgt:
sizeof(char) ≤ sizeof(short int) ≤ sizeof(int) ≤ sizeof(long int)
Viele gehen jedoch davon aus, dass Long auf der Grundlage dieser Hierarchie 32 Bits haben muss. Der Standard besagt jedoch ausdrücklich, dass die Anzahl der Bits in einem Byte durch die Implementierung definiert ist.
Alf P. Steinbachs Behauptung
Trotz dieses scheinbaren Widerspruchs behauptet Alf P. Steinbach behauptete, dass long garantiert 32 Bit beträgt. Er stützte diese Behauptung auf die implizite Grenze des Wertebereichs, den ein Long-Wert enthalten kann (LONG_MIN bis LONG_MAX).
Der C-Standard verweist auf den C-Standard (18.3.2), der Folgendes definiert:
LONG_MIN ≤ -2^31 + 1 LONG_MAX ≥ 2^31 - 1
Verbindung zur 32-Bit-Darstellung
Dies stellt zwar einen Bereich für lange Zeit her, garantiert jedoch nicht ausdrücklich 32 Bit. Es gibt jedoch zwei Möglichkeiten:
Fazit
Obwohl der C-Standard nicht explizit verlangt, dass long 32 Bit hat, erfordert die Mindestbereichsanforderung (LONG_MIN bis LONG_MAX) dies implizit. Dies liegt daran, dass die Darstellung dieser Werte entweder 32 Bit Speicher oder einen implementierten spezifischen Mechanismus mit gleichwertiger Wertekapazität erfordert. Daraus lässt sich schließen, dass C garantiert, dass long mindestens 32 Bits hat.
Das obige ist der detaillierte Inhalt vonHat „long' in C garantiert mindestens 32 Bits?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!