Heim > Backend-Entwicklung > C++ > Hat „long' in C garantiert mindestens 32 Bits?

Hat „long' in C garantiert mindestens 32 Bits?

Barbara Streisand
Freigeben: 2024-10-26 17:39:30
Original
1114 Leute haben es durchsucht

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)
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

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