C/C++:lla on hyvin löysät määritelmät peruskokonaislukutietotyypeilleen (char short in long ja long long). Kieli takaa, että ne voivat edustaa ainakin jotakin arvoaluetta, mutta mikä tahansa tietty alusta (kääntäjän käyttöjärjestelmän laitteisto) voi olla tätä suurempi.
Hyvä esimerkki on pitkä. Yhdellä koneella se voi olla 32 bittiä (C:n vaatima minimi). Toisessa se on 64 bittiä. Mitä teet, jos haluat kokonaislukutyypin, joka on täsmälleen 32 bittiä pitkä? Siellä int32_t tulee esiin: se on alias mille tahansa kokonaislukutyypille, joka järjestelmässäsi on, joka on täsmälleen 32 bittiä.
Malli:
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.
c-ohjelma kaksiulotteiselle taulukolleCPP
// 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; }
Lähtö:
jatkotietotyyppejä
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
Eri variaatioita
1. Kiinteä leveys etumerkitön 8-bittinen kokonaisluku: uint8_t
Se tarkoittaa, että anna minulle tarkalleen 8 bitin etumerkitön int.
2. Vähimmäisleveys etumerkitön 8-bittinen kokonaisluku: uint_least8_t
Se tarkoittaa, että anna minulle pienin allekirjoittamaton int, jossa on vähintään 8 bittiä. Optimoitu muistin kulutukseen.
3. Nopein minimileveys etumerkitön 8-bittinen kokonaisluku: uint_fast8_t
Se tarkoittaa, että anna minulle vähintään 8 bitin allekirjoittamaton int, mikä tekee ohjelmastani nopeamman. Se voi valita suuremman tietotyypin kohdistusnäkökohtien vuoksi. Optimoitu nopeuteen.
Siten uint8_t on taatusti tasan 8 bittiä leveä. Uint_least8_t on pienin kokonaisluku, joka on taatusti vähintään 8 bittiä leveä. Uint_fast8_t on nopein kokonaisluku, joka on taatusti vähintään 8 bittiä leveä.
Joten laajennetut integraalityypit auttavat meitä kirjoittamisessa kannettava ja tehokas koodi.