"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Est-ce que « long » est garanti d'avoir au moins 32 bits en C++ ?

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

Publié le 2024-11-07
Parcourir:317

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)

Cependant, beaucoup supposent que sur cette base 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.

L'affirmation 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

Connexion à une représentation 32 bits

Bien que cela établisse une plage longue, il 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.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3