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 nizovCPP
// 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.