C/C++ pagrindinių sveikųjų duomenų tipų apibrėžimai yra labai laisvi (char short in long ir long long). Kalba garantuoja, kad jie gali atstovauti bent tam tikrą reikšmių diapazoną, tačiau bet kuri konkreti platforma (kompiliatoriaus operacinės sistemos aparatinė įranga) gali būti didesnė.
Geras pavyzdys yra ilgas. Viename įrenginyje jis gali būti 32 bitai (minimalus, kurio reikalauja C). Kitu atveju tai yra 64 bitai. Ką daryti, jei norite, kad sveikasis skaičius būtų tiksliai 32 bitų ilgio? Štai čia atsiranda int32_t: tai slapyvardis bet kokio tipo sveikajam skaičiui, kurį turi jūsų konkreti sistema, kuris yra lygiai 32 bitai.
Šablonas:
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; }
Išvestis:
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
Įvairūs variantai
1. Fiksuoto pločio nepaženklintas 8 bitų sveikasis skaičius: uint8_t
Tai reiškia, kad duok man nepasirašytą lygiai 8 bitų int.
2. Mažiausias plotis be ženklų 8 bitų sveikasis skaičius: uint_least8_t
Tai reiškia, duokite man mažiausio tipo nepasirašytą int, kuris turi mažiausiai 8 bitus. Optimizuotas atminties sunaudojimui.
3. Greičiausias mažiausias plotis be ženklų 8 bitų sveikasis skaičius: uint_fast8_t
Tai reiškia, kad suteikite man nepasirašytą bent 8 bitų int, kuris pagreitins mano programą. Jis gali pasirinkti didesnį duomenų tipą dėl suderinimo. Optimizuotas greičiui.
Taigi garantuojama, kad uint8_t yra tiksliai 8 bitų pločio. Uint_least8_t yra mažiausias sveikas skaičius, kurio plotis yra mažiausiai 8 bitai. Uint_fast8_t yra greičiausias sveikasis skaičius, kurio plotis yra mažiausiai 8 bitai.
Taigi išplėstiniai integralo tipai mums padeda rašyti nešiojamas ir efektyvus kodas.