Maison > Article > développement back-end > Est-ce que `long` est garanti d'avoir au moins 32 bits en 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 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
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 :
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!