Проширени интегрални типови (одабир тачне величине целог броја у Ц/Ц++)

Ц/Ц++ има веома лабаве дефиниције својих основних целобројних типова података (цхар схорт инт лонг и лонг лонг). Језик гарантује да они могу представљати бар неки опсег вредности, али било која посебна платформа (хардвер оперативног система компајлера) може бити већа од тога.
Добар пример је дуг. На једној машини може бити 32 бита (минимум који захтева Ц). На другом је 64 бита. Шта да радите ако желите целобројни тип који има тачно 32 бита? Ту долази инт32_т: то је псеудоним за било који целобројни тип који ваш систем има, а то је тачно 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     &  lt  ;  &  lt  ;     &  quot  ;  Minimum     value     of     i    t  :     &  quot  ;  &  lt  ;  &  lt  ;     (  int  )  i     &  lt  ;  &  lt  ;     endl  ;      // Maximum value represented by unsigned 8 bit is 255      i     =     255  ;      cout     &  lt  ;  &  lt  ;     &  quot  ;  Maximum     value     of     i    t  :     &  quot  ;  &  lt  ;  &  lt  ;     (  int  )  i     &  lt  ;  &  lt  ;     endl  ;      // Warning: large integer implicitly truncated to      // unsigned type. It will print any garbage value      i     =     2436  ;      cout     &  lt  ;  &  lt  ;     &  quot  ;  Beyond     range     value     of     i    t  :     &  quot  ;     &  lt  ;  &  lt  ;     (  int  )  i     &  lt  ;  &  lt  ;     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-битни цео број фиксне ширине: уинт8_т  
То значи да ми дај непотписани инт од тачно 8 бита.
2. Минимална ширина без предзнака 8-битни цео број: уинт_леаст8_т  
То значи да ми дај најмањи тип непотписаног инт који има најмање 8 бита. Оптимизовано за потрошњу меморије.
3. Најбржи 8-битни цео број без знака минималне ширине: уинт_фаст8_т  
То значи да ми дајте непотписани инт од најмање 8 бита што ће мој програм учинити бржим. Може изабрати већи тип података због разматрања поравнања. Оптимизовано за брзину.
Тако је загарантовано да је уинт8_т широк тачно 8 бита. Уинт_леаст8_т је најмањи цео број за који је гарантовано широк најмање 8 бита. Уинт_фаст8_т је најбржи цео број за који је гарантовано широк најмање 8 бита. 
Дакле, проширени интегрални типови нам помажу у писању преносиви и ефикасан код.