C/C++ har meget løse definitioner på dets grundlæggende heltalsdatatyper (char short int long og long long). Sproget garanterer, at de i det mindste kan repræsentere et vist område af værdier, men enhver bestemt platform (hardware til compileroperativsystem) kan være større end det.
Et godt eksempel er langt. På én maskine kan det være 32 bit (det minimum, der kræves af C). På en anden er den 64 bit. Hvad gør du, hvis du vil have en heltalstype, der er præcis 32 bit lang? Det er her int32_t kommer ind: det er et alias for den heltalstype, som dit særlige system har, som er præcis 32 bit.
Skabelon:
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; }
Produktion:
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
Forskellige variationer
1. Usigneret 8 bit heltal med fast bredde: uint8_t
Det betyder, at giv mig en usigneret int på præcis 8 bit.
2. Minimum bredde usigneret 8 bit heltal: uint_mindst8_t
Det betyder, at giv mig den mindste type usigneret int, som har mindst 8 bit. Optimeret til hukommelsesforbrug.
3. Hurtigste minimumsbredde usigneret 8 bit heltal: uint_fast8_t
Det betyder, at giv mig en usigneret int på mindst 8 bit, hvilket vil gøre mit program hurtigere. Det kan vælge en større datatype på grund af justeringshensyn. Optimeret til hastighed.
Således er en uint8_t garanteret at være præcis 8 bit bred. En uint_least8_t er det mindste heltal, der garanteret er mindst 8 bit bredt. En uint_fast8_t er det hurtigste heltal, der garanteret er mindst 8 bit bredt.
Så de udvidede integraltyper hjælper os med at skrive transportabel og effektiv kode.