Kiterjesztett integráltípusok (a megfelelő egész méret kiválasztása C/C++ nyelven)

A C/C++ nagyon laza definíciókkal rendelkezik az alapvető egész adattípusokra vonatkozóan (char short in long és long long). A nyelv garantálja, hogy legalább néhány értéktartományt képviselhetnek, de bármely adott platform (a fordító operációs rendszer hardvere) nagyobb lehet ennél.
A jó példa hosszú. Egy gépen 32 bites lehet (a C által megkövetelt minimum). A másiknál ​​64 bites. Mi a teendő, ha egy pontosan 32 bites egész típust szeretne? Itt jön be az int32_t: ez egy álnév az adott rendszer által használt egész számokhoz, ami pontosan 32 bites.
Sablon: 
 

  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  ;   }   

Kimenet: 
 

 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 


Különböző variációk  
1. Rögzített szélességű előjel nélküli 8 bites egész szám: uint8_t  
Ez azt jelenti, hogy pontosan 8 bites előjel nélküli int-et adj meg.
2. Minimális szélesség előjel nélküli 8 bites egész szám: uint_least8_t  
Ez azt jelenti, hogy adja meg a legkisebb típusú unsigned int-et, amely legalább 8 bites. Memóriafogyasztásra optimalizálva.
3. Leggyorsabb minimális szélességű előjel nélküli 8 bites egész szám: uint_fast8_t  
Ez azt jelenti, hogy adj nekem egy legalább 8 bites előjel nélküli int-et, ami gyorsabbá teszi a programomat. Az igazítási megfontolások miatt nagyobb adattípust választhat. Sebességre optimalizálva.
Így az uint8_t garantáltan pontosan 8 bit széles. Az uint_least8_t a legkisebb egész szám, amely garantáltan legalább 8 bit széles. Az uint_fast8_t a leggyorsabb egész szám, amely garantáltan legalább 8 bit széles. 
Tehát a kiterjesztett integrál típusok segítenek az írásban hordozható és hatékony kód.