Maison > développement back-end > C++ > le corps du texte

Est-ce que `long` est garanti d'avoir au moins 32 bits en C ?

Barbara Streisand
Libérer: 2024-10-26 17:39:30
original
977 Les gens l'ont consulté

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

Long est-il garanti d'avoir 32 bits ?

Malgré les hypothèses courantes basées sur la norme C, la question se pose de savoir si long est garanti d'avoir au moins 32 bits. La norme classe les types intégraux fondamentaux comme :

sizeof(char) ≤ sizeof(short int) ≤ sizeof(int) ≤ sizeof(long int)
Copier après la connexion

Cependant, beaucoup supposent que sur la base de cette hiérarchie, long doit avoir 32 bits. Cependant, la norme indique explicitement que le nombre de bits dans un octet est défini par l'implémentation.

Réclamation d'Alf P. Steinbach

Malgré cette apparente contradiction, Alf P. Steinbach a affirmé que long est garanti comme étant de 32 bits. Il a basé cette affirmation sur la limite implicite de la plage de valeurs qu'un long peut contenir (LONG_MIN à LONG_MAX).

La norme C fait référence à la norme C (18.3.2), qui définit :

LONG_MIN ≤ -2^31 + 1
LONG_MAX ≥ 2^31 - 1
Copier après la connexion

Connexion à une représentation 32 bits

Bien que cela établisse une plage à long terme, cela ne garantit pas explicitement 32 bits. Cependant, il existe deux possibilités :

  1. Représentation en complément à deux :
    Si les nombres négatifs sont représentés en complément à deux, le stockage de LONG_MIN ou LONG_MAX nécessite 32 bits.
  2. Bit de signe explicite :
    Si un bit de signe est utilisé pour les nombres négatifs, le stockage total nécessite toujours 32 bits.

Conclusion

Bien que la norme C n'exige pas explicitement que long ait 32 bits, l'exigence de plage minimale (LONG_MIN à LONG_MAX) le nécessite implicitement. En effet, la représentation de ces valeurs nécessite soit 32 bits de stockage, soit un mécanisme spécifique à l'implémentation avec une capacité de valeur équivalente. Par conséquent, on peut conclure que C garantit que long a au moins 32 bits.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!