C/C++ има много свободни дефиниции на своите основни типове данни (char short int long и long long). Езикът гарантира, че те могат да представят поне някакъв диапазон от стойности, но всяка конкретна платформа (хардуер на операционната система на компилатора) може да бъде по-голяма от тази.
Добър пример е дълъг. На една машина може да е 32 бита (минимумът, изискван от C). На друг е 64 бита. Какво правите, ако искате целочислен тип, който е дълъг точно 32 бита? Това е мястото, където int32_t идва: това е псевдоним за какъвто и да е тип цяло число, което вашата система има, което е точно 32 бита.
шаблон:
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; }
Изход:
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
Различни вариации
1. 8-битово цяло число без знак с фиксирана ширина: uint8_t
Това означава да ми дадете unsigned int от точно 8 бита.
2. Минимална ширина на 8-битово цяло число без знак: uint_least8_t
Това означава, че ми дайте най-малкия тип unsigned int, който има поне 8 бита. Оптимизиран за консумация на памет.
3. Най-бързата минимална ширина без знак 8-битово цяло число: uint_fast8_t
Това означава да ми даде неподписано int от поне 8 бита, което ще направи програмата ми по-бърза. Може да избере по-голям тип данни поради съображения за подравняване. Оптимизиран за скорост.
По този начин uint8_t гарантирано ще бъде широк точно 8 бита. uint_least8_t е най-малкото цяло число, което гарантира, че е поне 8 бита широко. uint_fast8_t е най-бързото цяло число, което гарантира, че е поне 8 бита широко.
Така че разширените интегрални типове ни помагат при писане преносим и ефикасен код.