#include <stdint.h> // <cstdint> en C++
Les types de largeur exacte permettent de demander explicitement un entier de 8, 16, 32 ou 64 bits. Le préfixe int
correspond à une valeur signée, alors que le préfixe uint correspond à une valeur non signée.
| Type | Largeur | Description |
|---|---|---|
int8_t / uint8_t |
8 bits | Petits entiers, octets, composantes de couleur ou données binaires. |
int16_t / uint16_t |
16 bits | Valeurs courtes, formats binaires ou protocoles imposant deux octets. |
int32_t / uint32_t |
32 bits | Entiers de taille fixe très utilisés dans les formats de fichiers et les protocoles. |
int64_t / uint64_t |
64 bits | Grandes valeurs entières, identifiants, compteurs ou masques étendus. |
Ces types ne sont pas simplement des alias de confort : ils documentent l'intention du code. Si vous écrivez un fichier binaire dans lequel
un champ doit occuper exactement 32 bits, uint32_t est plus explicite que unsigned int, dont la taille reste
dépendante de la plate-forme.
L'exemple suivant stocke des informations de taille fixe dans plusieurs variables typées par <stdint.h>.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <stdint.h> #include <stdio.h> #include <stdlib.h> int main() { uint8_t red = 255; uint8_t green = 128; uint8_t blue = 64; int32_t offset = -2048; uint64_t identifier = UINT64_C( 1234567890123456789 ); printf( "rgb == (%u, %u, %u)\n", (unsigned int) red, (unsigned int) green, (unsigned int) blue ); printf( "offset == %ld\n", (long) offset ); printf( "identifier == %llu\n", (unsigned long long) identifier ); return EXIT_SUCCESS; } |
Les résultats produits par cet exemple sont :
rgb == (255, 128, 64) offset == -2048 identifier == 1234567890123456789
int8_t, int16_t, int32_t, int64_t et leurs équivalents non signés
ne sont définis que si l'implémentation sait fournir exactement la largeur demandée. Sur les environnements actuels c'est très généralement
le cas, mais ce point explique pourquoi le standard présente ces types comme conditionnels.
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :