Les entiers de taille fixée

Les types de base comme int ou long peuvent être pratiques car leur taille s'adapte à l'architecture sur laquelle on travaille. Par exemple, int sera un entier 16 bits sur une architecture 16 bits, mais 32 bits sur une architecture 32 ou 64 bits. Cette « adaptation » peut aussi être un inconvénient quand on souhaite maîtriser exactement la taille (ou les valeurs minimales/maximales) des données. C99 introduit des types entiers de taille fixe, déclarés dans le fichier d'en-tête stdint.h (man stdint.h pour avoir les détails). Par exemple, le type int16_t désigne un entier signé sur 16 bits, le type uint32_t un entier non signé (« u » comme « unsigned ») sur 32 bits. Plus généralement, les types int$N$_t et uint$N$_t désignent respectivement des entiers signés et non-signés sur $N$ bits. La norme impose de définir ces types pour $N$ valant 8, 16 et 32 ; et si l'implémentation fournit de tels entiers, 64. Pour chaque valeur de $N$, les constantes INT$N$_MIN et INT$N$_MAX désignent les valeur minimales et maximales possibles pour le type int$N$_t.

Matthieu Moy 2017-02-08