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