2016-02-06 14 views
7

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++

+0

http://en.cppreference.com/w/cpp/types/integer –

+6

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. –

+1

Nelle implementazioni più comuni, 'char' è 8 bit. Se non è 8 bit, non ci sarà un 'std :: int8_t'. – chris

risposta

11

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 signedunsigned 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.

+1

Si noti che 'int8_t' potrebbe non essere un typedef di' char' su piattaforme in cui 'char' è inferiore a 8 bit. – vsoftco

+0

Credo che 'char' sia 1 byte. Non è? Potrebbe essere necessario riconfermarmi :) ora – dlmeetei

+0

'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

Problemi correlati