C/C++ har veldig løse definisjoner på sine grunnleggende heltallsdatatyper (char short int long og long long). Språket garanterer at de kan representere i det minste et spekter av verdier, men en bestemt plattform (kompilatoroperativsystemmaskinvare) kan være større enn det.
Et godt eksempel er langt. På en maskin kan det være 32 biter (minimum som kreves av C). På en annen er den 64 biter. Hva gjør du hvis du vil ha en heltallstype som er nøyaktig 32 biter lang? Det er her int32_t kommer inn: det er et alias for hvilken heltallstype ditt spesielle system har som er nøyaktig 32 biter.
Mal:
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 << "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; }
Produksjon:
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
Ulike varianter
1. Usignert 8-bits heltall med fast bredde: uint8_t
Det betyr å gi meg en usignert int på nøyaktig 8 bits.
2. Minimum bredde usignert 8 bits heltall: uint_least8_t
Det betyr å gi meg den minste typen usignert int som har minst 8 bits. Optimalisert for minneforbruk.
3. Raskeste minimumsbredde usignert 8 bits heltall: uint_fast8_t
Det betyr å gi meg en usignert int på minst 8 bits som vil gjøre programmet mitt raskere. Den kan velge større datatype på grunn av justeringshensyn. Optimalisert for hastighet.
Dermed er en uint8_t garantert nøyaktig 8 bits bred. En uint_least8_t er det minste heltallet som garantert er minst 8 bits bredt. En uint_fast8_t er det raskeste heltallet som garantert er minst 8 bits bredt.
Så de utvidede integraltypene hjelper oss å skrive bærbar og effektiv kode.