C/C++ a des définitions très vagues sur ses types de données entiers de base (char short int long et long long). Le langage garantit qu'ils peuvent représenter au moins une certaine plage de valeurs, mais toute plate-forme particulière (matériel du système d'exploitation du compilateur) peut être plus grande que cela.
Un bon exemple est long. Sur une machine, il peut s'agir de 32 bits (le minimum requis par C). Sur un autre, c'est 64 bits. Que faites-vous si vous voulez un type entier d’une longueur précise de 32 bits ? C'est là qu'intervient int32_t : c'est un alias pour le type entier de votre système particulier qui fait exactement 32 bits.
Modèle:
intN_t or uintN_t Where N is width of integer which can be 8 16 32 64 or any other type width supported by the library.
CPP
// C++ program to show use of extended integral types #include using namespace std; int main() { uint8_t i; // i with width of exact 8 bits // Minimum value represented by unsigned 8 bit is 0 i = 0; cout << "Minimum value of it: "<< (int)i << endl; // Maximum value represented by unsigned 8 bit is 255 i = 255; cout << "Maximum value of it: "<< (int)i << endl; // Warning: large integer implicitly truncated to // unsigned type. It will print any garbage value i = 2436; cout << "Beyond range value of it: " << (int)i << endl; return 0; }
Sortir:
In function 'int main()': 19:7: warning : large integer implicitly truncated to unsigned type [-overflow] i = 2436; ^ Minimum value of i : 0 Maximum value of i : 255 Beyond range value of i : 132
Différentes variantes
1. Entier 8 bits non signé à largeur fixe : uint8_t
Cela signifie me donner un entier non signé d'exactement 8 bits.
2. Entier non signé de 8 bits de largeur minimale : uint_least8_t
Cela signifie me donner le plus petit type d’entier non signé comportant au moins 8 bits. Optimisé pour la consommation de mémoire.
3. Entier non signé de 8 bits de largeur minimale la plus rapide : uint_fast8_t
Cela signifie me donner un entier non signé d'au moins 8 bits, ce qui rendra mon programme plus rapide. Il peut choisir un type de données plus volumineux en raison de considérations d'alignement. Optimisé pour la vitesse.
Ainsi, un uint8_t est garanti d'avoir exactement 8 bits de large. Un uint_least8_t est le plus petit entier garanti d'avoir une largeur d'au moins 8 bits. Un uint_fast8_t est l'entier le plus rapide garanti avec une largeur d'au moins 8 bits.
Les types intégraux étendus nous aident donc à écrire portable et efficace code.