Maison >développement back-end >C++ >Est-ce que `long` est garanti d'être au moins 32 bits en C ?
Long est-il garanti d'être au moins 32 bits ?
La norme C dicte l'ordre de priorité suivant en termes de stockage de données pour l'intégration types fondamentaux :
sizeof(char) ≤ sizeof(short int) ≤ sizeof(int) ≤ sizeof(long int)
Des précisions supplémentaires sur la taille du caractère sont fournies dans la section 1.7/1 :
The fundamental storage unit in the C++ memory model is the byte. A byte is at least large enough to contain any member of the implementation’s basic character set and is composed of a contiguous sequence of bits, the number of which is implementation-defined.
Cela suggère que sizeof(char) peut être compris entre 1 et n bits, où n dépend de l'implémentation. Cependant, la norme C nécessite également la connaissance de la norme C (1.2/1), qui définit des limites minimales pour les valeurs que long peut accepter :
LONG_MIN = -2147483647 // -(2^31 - 1) LONG_MAX = +2147483647 // 2^31 - 1
Puisque long doit pouvoir contenir à la fois des valeurs positives et négatives. valeurs jusqu'à ces limites, on en déduit logiquement que long doit avoir une taille d'au moins 32 bits.
En bref, alors que la norme C laisse le nombre de bits dans un octet non spécifié, les limites minimales imposées à LONG_MIN et LONG_MAX impliquent que long doit avoir au moins 32 bits de stockage.
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!