Comme le souligne Kevin Haines, les ints ont la taille naturelle suggérée par l'environnement d'exécution, qui doit s'inscrire dans les limites de INT_MIN et INT_MAX.
La norme C89 stipule que UINT_MAX
devrait être au moins 2^16-1, USHRT_MAX
2^16-1 et ULONG_MAX
2^32-1 . Cela donne un nombre de bits d'au moins 16 pour short et int, et 32 pour long. Pour char, il est explicitement indiqué qu'il doit avoir au moins 8 bits ( CHAR_BIT
). Le C++ hérite de ces règles pour le fichier limits.h, donc en C++ nous avons les mêmes exigences fondamentales pour ces valeurs. Vous devez cependant no déduire de cela que int est au moins 2 byte. Théoriquement, char, int et long pourraient tous être d'un octet, auquel cas CHAR_BIT
doit être d'au moins 32. N'oubliez pas que l'"octet" est toujours la taille d'un caractère, donc si le caractère est plus grand, un octet n'est plus seulement 8 bits.