logo

Razširjeni tipi integralov (izbira pravilne velikosti celega števila v C/C++)

C/C++ ima zelo ohlapne definicije svojih osnovnih celih tipov podatkov (char short int long in long long). Jezik zagotavlja, da lahko predstavljajo vsaj nekaj obsega vrednosti, vendar je katera koli določena platforma (strojna oprema operacijskega sistema prevajalnika) lahko večja od tega.
Dober primer je dolg. Na enem stroju je lahko 32 bitov (minimum, ki ga zahteva C). Na drugem je 64 bitov. Kaj storite, če želite vrsto celega števila, ki je dolga natančno 32 bitov? Tu nastopi int32_t: to je vzdevek za kateri koli tip celega števila, ki ga ima vaš določen sistem in je točno 32 bitov.
Predloga: 
 

  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.


 



java za rezanje nizov
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; } 

Izhod: 
 

pretvorba nfa v dfa
 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


Različne različice  
1. Nepredznačeno 8-bitno celo število fiksne širine: uint8_t  
To pomeni, daj mi nepredznačeno int natančno 8 bitov.
2. Najmanjša širina nepredznačenega 8-bitnega celega števila: uint_least8_t  
To pomeni, dajte mi najmanjšo vrsto unsigned int, ki ima vsaj 8 bitov. Optimizirano za porabo pomnilnika.
3. Najhitrejše 8-bitno celo število brez predznaka najmanjše širine: uint_fast8_t  
Pomeni, daj mi vsaj 8-bitno nepredznačeno int, zaradi česar bo moj program hitrejši. Morda bo izbral večji podatkovni tip zaradi pomislekov glede poravnave. Optimizirano za hitrost.
Tako je zajamčeno, da bo uint8_t širok točno 8 bitov. Uint_least8_t je najmanjše celo število, ki je zajamčeno široko vsaj 8 bitov. Uint_fast8_t je najhitrejše celo število, ki je zajamčeno široko vsaj 8 bitov. 
Pri pisanju nam torej pomagajo razširjeni integralni tipi prenosni in učinkovito kodo.