C/C++ ha definizioni molto vaghe sui suoi tipi di dati interi di base (char short int long e long long). Il linguaggio garantisce che possano rappresentare almeno un intervallo di valori, ma qualsiasi piattaforma particolare (hardware del sistema operativo del compilatore) potrebbe essere più grande di quella.
Un buon esempio è lungo. Su una macchina potrebbero essere 32 bit (il minimo richiesto da C). Dall'altro sono 64 bit. Cosa fai se vuoi un tipo intero lungo esattamente 32 bit? È qui che entra int32_t: è un alias per qualsiasi tipo intero del tuo particolare sistema che sia esattamente 32 bit.
Modello:
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; }
Produzione:
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
Diverse variazioni
1. Intero a 8 bit senza segno a larghezza fissa: uint8_t
Significa darmi un int senza segno di esattamente 8 bit.
2. Intero a 8 bit senza segno con larghezza minima: uint_least8_t
Significa dammi il tipo più piccolo di unsigned int che abbia almeno 8 bit. Ottimizzato per il consumo di memoria.
3. Intero a 8 bit senza segno con larghezza minima più veloce: uint_fast8_t
Significa darmi un unsigned int di almeno 8 bit che renderà il mio programma più veloce. Potrebbe scegliere un tipo di dati più grande a causa di considerazioni sull'allineamento. Ottimizzato per la velocità.
Pertanto è garantito che uint8_t abbia una larghezza esatta di 8 bit. A uint_least8_t è il numero intero più piccolo che garantisce una larghezza di almeno 8 bit. Un uint_fast8_t è l'intero più veloce che garantisce una larghezza di almeno 8 bit.
Quindi i tipi integrali estesi ci aiutano nella scrittura portatile E efficiente codice.