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_t et uint_t désignent respectivement des entiers signés et non-signés sur bits. La norme impose de définir ces types pour valant 8, 16 et 32 ; et si l'implémentation fournit de tels entiers, 64. Pour chaque valeur de , les constantes INT_MIN et INT_MAX désignent les valeur minimales et maximales possibles pour le type int_t.
Matthieu Moy 2017-02-08