Paplašinātie integrālo veidu veidi (pareiza vesela skaitļa izmēra izvēle C/C++ valodā)

C/C++ ir ļoti brīvas definīcijas tā pamata veselo skaitļu datu tipiem (char short in long un long long). Valoda garantē, ka tie var attēlot vismaz kādu vērtību diapazonu, taču jebkura konkrēta platforma (kompilatora operētājsistēmas aparatūra) var būt lielāka par šo.
Labs piemērs ir garš. Vienā mašīnā tas varētu būt 32 biti (minimālais, kas nepieciešams C). Citā gadījumā tas ir 64 biti. Ko darīt, ja vēlaties veselu skaitļu tipu, kas ir precīzi 32 biti garš? Šeit parādās int32_t: tas ir aizstājvārds jebkuram veselam skaitļa veidam, kas ir jūsu konkrētajā sistēmā, kas ir tieši 32 biti.
Veidne: 
 

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

Izvade: 
 

 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 


Dažādas Variācijas  
1. Fiksēta platuma neparakstīts 8 bitu vesels skaitlis: uint8_t  
Tas nozīmē, ka dodiet man neparakstītu tieši 8 bitu int.
2. Minimālais platums neparakstīts 8 bitu vesels skaitlis: uint_least8_t  
Tas nozīmē, ka dodiet man mazāko neparakstīto int veidu, kuram ir vismaz 8 biti. Optimizēts atmiņas patēriņam.
3. Ātrākais minimālais platums bez paraksta 8 bitu vesels skaitlis: uint_fast8_t  
Tas nozīmē, ka piešķiriet man vismaz 8 bitu neparakstītu int, kas padarīs manu programmu ātrāku. Tas var izvēlēties lielāku datu tipu līdzināšanas apsvērumu dēļ. Optimizēts ātrumam.
Tādējādi tiek garantēts, ka uint8_t platums ir tieši 8 biti. Uint_least8_t ir mazākais veselais skaitlis, kura platums ir vismaz 8 biti. Uint_fast8_t ir ātrākais veselais skaitlis, kura platums ir vismaz 8 biti. 
Tātad paplašinātie integrāļu veidi mums palīdz rakstīšanā pārnēsājams un efektīva kodu.