C/C++ má velmi volné definice základních celočíselných datových typů (char short int long a long long). Jazyk zaručuje, že mohou představovat alespoň určitý rozsah hodnot, ale jakákoli konkrétní platforma (hardware kompilátoru operačního systému) může být větší.
Dobrý příklad je dlouhý. Na jednom počítači to může být 32 bitů (minimum požadované C). Na jiném je to 64 bitů. Co uděláte, pokud chcete celočíselný typ, který je přesně 32 bitů dlouhý? Zde přichází na řadu int32_t: je to alias pro jakýkoli typ celého čísla, který má váš konkrétní systém, což je přesně 32 bitů.
Šablona:
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ůzné variace
1. Pevná šířka 8bitové celé číslo bez znaménka: uint8_t
To znamená, dejte mi přesně 8bitový int bez znaménka.
2. Minimální šířka 8bitové celé číslo bez znaménka: uint_least8_t
To znamená, dejte mi nejmenší typ nepodepsaného int, který má alespoň 8 bitů. Optimalizováno pro spotřebu paměti.
3. Nejrychlejší minimální šířka bez znaménka 8bitové celé číslo: uint_fast8_t
To znamená, že mi dejte unsigned int alespoň 8 bitů, což zrychlí můj program. Může vybrat větší datový typ kvůli úvahám o zarovnání. Optimalizováno pro rychlost.
Je tedy zaručeno, že uint8_t bude mít šířku přesně 8 bitů. Uint_least8_t je nejmenší zaručené celé číslo široké alespoň 8 bitů. Uint_fast8_t je nejrychlejší celé číslo, které má zaručenou šířku alespoň 8 bitů.
Rozšířené integrální typy nám tedy pomáhají při psaní přenosný a účinný kód.