„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Hat „long“ in C++ garantiert mindestens 32 Bits?

Hat „long“ in C++ garantiert mindestens 32 Bits?

Veröffentlicht am 07.11.2024
Durchsuche:263

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

Hat Long garantiert 32 Bits?

Trotz allgemeiner Annahmen basierend auf dem C-Standard stellt sich die Frage, ob Long garantiert 32 Bits hat mindestens 32 Bit. Der Standard klassifiziert die grundlegenden Integraltypen als:

sizeof(char) ≤ sizeof(short int) ≤ sizeof(int) ≤ sizeof(long int)

Viele gehen jedoch davon aus, dass dies der Fall ist Hierarchie, long muss 32 Bit haben. 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 legt zwar einen Bereich für long fest, garantiert jedoch nicht explizit 32 Bits. 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 Bits.

Fazit

Obwohl der C-Standard nicht explizit verlangt, dass long 32 Bits hat, ist dies aufgrund der Mindestbereichsanforderung (LONG_MIN bis LONG_MAX) implizit erforderlich. Dies liegt daran, dass die Darstellung dieser Werte entweder 32 Bit Speicher oder einen implementierten spezifischen Mechanismus mit gleichwertiger Wertekapazität erfordert. Daraus kann geschlossen werden, dass C garantiert, dass long mindestens 32 Bits hat.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3