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