C/C++ má veľmi voľné definície základných celočíselných dátových typov (char short int long a long long). Jazyk zaručuje, že môžu reprezentovať aspoň určitý rozsah hodnôt, ale akákoľvek konkrétna platforma (hardvér operačného systému kompilátora) môže byť väčšia.
Dobrý príklad je dlhý. Na jednom počítači to môže byť 32 bitov (minimum požadované C). Na inom je to 64 bitov. Čo robiť, ak chcete celočíselný typ, ktorý je presne 32 bitov dlhý? Tu prichádza na scénu int32_t: je to alias pre akýkoľvek typ celého čísla, ktorý má váš konkrétny systém, čo je presne 32 bitov.
Šablóna:
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; }
výstup:
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
Rôzne variácie
1. Pevná šírka 8-bitové celé číslo bez znamienka: uint8_t
Znamená to, že mi dajte presne 8 bitový int bez znamienka.
2. Minimálna šírka 8-bitové celé číslo bez znamienka: uint_least8_t
To znamená, že mi dajte najmenší typ nepodpísaného int, ktorý má aspoň 8 bitov. Optimalizované pre spotrebu pamäte.
3. Najrýchlejšie minimálne 8-bitové celé číslo bez znamienka: uint_fast8_t
To znamená, že mi daj unsigned int aspoň 8 bitov, čo zrýchli môj program. Môže vybrať väčší typ údajov kvôli úvahám o zarovnaní. Optimalizované pre rýchlosť.
Preto je zaručené, že uint8_t bude mať šírku presne 8 bitov. Uint_least8_t je najmenšie celé číslo, ktoré má zaručenú šírku aspoň 8 bitov. Uint_fast8_t je najrýchlejšie celé číslo, ktoré má zaručenú šírku aspoň 8 bitov.
Rozšírené integrálne typy nám teda pomáhajú pri písaní prenosný a efektívne kód.