2011-11-06 9 views
6
struct x 
{ 
    char a : 1; // statement 1 
    char c : 3; // statement 2 
}; 

cuál será el tamaño si esta estructura. ¿Cuál es el significado de la declaración 1 y 2?Tamaño de la estructura dada

+5

No son declaraciones, pero las declaraciones de campos de bits. –

Respuesta

10

Esas declaraciones declaran Los campos de bits.
Significa a ocupa la memoria de 1 bit y c ocupa la memoria de 3 bits.

El tamaño de la estructura será:
Al menos 4 bits + relleno (bits)

y lo más probable, será 8 bits es decir: 1 byte

Porque,
Si una serie de los campos de bits no suman el tamaño de un int, el relleno puede tener lugar. La cantidad de relleno está determinada por las características de alineación de los miembros de la estructura.

¿Cuáles son los campos de bits?
From IBM documentation:

Tanto C y C++ permiten a los miembros de enteros que se almacenan en espacios de memoria más pequeñas que el compilador permitiría ordinariamente. Estos miembros de estructura que ahorran espacio se denominan campos de bits y su ancho en bits se puede declarar explícitamente. Los campos de bits se usan en programas que deben obligar a que una estructura de datos se corresponda con una representación de hardware fija y es poco probable que sean portátiles.

la sintaxis para declarar un campo de bits es la siguiente:

>> - type_specifier - + ------------ + -: - constant_expression -; - -> < '-declarator-'

una declaración campo de bits contiene un especificador de tipo seguido por una declarador opcional, un colon, una expresión constante entera que indica el ancho de campo en bits, y un punto y coma. Una declaración de campo de bit no puede usar cualquiera de los calificadores de tipo, const o volátil.

Cuestiones relacionadas