Heim  >  Artikel  >  Backend-Entwicklung  >  Hat „long“ in C garantiert mindestens 32 Bits?

Hat „long“ in C garantiert mindestens 32 Bits?

Barbara Streisand
Barbara StreisandOriginal
2024-10-26 17:39:30979Durchsuche

Is `long` Guaranteed to Have at Least 32 Bits in C  ?

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:

  1. Zweierkomplementdarstellung:
    Wenn negative Zahlen im Zweierkomplement dargestellt werden, erfordert die Speicherung von LONG_MIN oder LONG_MAX 32 Bits.
  2. Explizites Vorzeichenbit:
    Wenn ein Vorzeichenbit für negative Zahlen verwendet wird, benötigt der Gesamtspeicher immer noch 32 Bit.

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!

Stellungnahme:
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