In C++, in particolare il file di intestazione cstdint, ci sono tipi per interi a 8 bit che risultano essere del tipo di dati char con typedef. Qualcuno potrebbe suggerire un vero tipo intero a 8 bit?C'è un vero tipo di dati intero a 8 bit in C++
risposta
Sì, hai ragione. int8_t
e uint8_t
sono typedef
a char
su piattaforme in cui 1 byte è 8 bit. Su piattaforme in cui non lo è, verrà data una definizione appropriata.
risposta seguito si riferiscono al presupposto che char è 8 bits
char
vale 1 byte, che può essere o signed
unsigned
base di attuazione.
Così int8_t
è signed char
e uint8_t
è unsigned char
, ma questo sarà sicuro da usare int8_t/uint8_t come attuale 8-bit integer, senza fare troppo affidamento sulla realizzazione.
Per il punto di vista di un attuatore, typedef
fing dove char è 8 bit ha senso.
Visto tutto questo, È sicuro usare int8_t
o uint8_t
come numero intero intero a 8 bit.
Si noti che 'int8_t' potrebbe non essere un typedef di' char' su piattaforme in cui 'char' è inferiore a 8 bit. – vsoftco
Credo che 'char' sia 1 byte. Non è? Potrebbe essere necessario riconfermarmi :) ora – dlmeetei
'char' è effettivamente 1 byte, ma 1 byte non è sempre 8 bit, si veda ad es. [Questo] (http://stackoverflow.com/questions/2098149/what-platforms-have-something-other-than-8-bit-char). Anche se la mia convinzione è che 'int8_t' non è definito per piattaforme in cui un byte non è 8 bit. – vsoftco
http://en.cppreference.com/w/cpp/types/integer –
Come ho capito, 'int8_t' è garantito per essere un numero intero a 8 bit, se è definito del tutto. Il fatto che la tua implementazione sia typedef come 'char' (o forse' signed char') implica che il 'char' dell'implementazione è in realtà 8 bit. Nota che 'char' e i suoi parenti sono sempre tipi interi in C e C++; questo differisce da alcuni altri linguaggi che non considerano i caratteri come tipi aritmetici. –
Nelle implementazioni più comuni, 'char' è 8 bit. Se non è 8 bit, non ci sarà un 'std :: int8_t'. – chris