Duplicar posibles:
What does 'unsigned temp:3' mean?¿Qué significa esto en c int a: 16 ;?
por favor, ¿qué significa esta notación
int a: 16;
Encontré que es un código como este y compila.
struct nombre { int a: 16; }
Duplicar posibles:
What does 'unsigned temp:3' mean?¿Qué significa esto en c int a: 16 ;?
por favor, ¿qué significa esta notación
int a: 16;
Encontré que es un código como este y compila.
struct nombre { int a: 16; }
Esto es bitfield.
Este bitfield en particular no tiene mucho sentido ya que solo podría usar un tipo de 16 bits y perderá algo de espacio ya que el campo de bits se rellena al tamaño de int
.
Por lo general, usted lo está utilizando para las estructuras que contienen elementos de tamaño de bits:
struct {
unsigned nibble1 : 4;
unsigned nibble2 : 4;
}
Es un campo de bits.
Nunca he visto un campo de bits de 16 bits; generalmente eso es un corto.
struct name { int a:16; }
Significa a
se define como 16 bits espacio memoria. Los bits restantes (16 bits) de int
se pueden utilizar para definida otra variable, por ejemplo b
, como este:
struct name { int a:16; int b:16; }
Así que si int
es de 32 bits (4 bytes), entonces la memoria de uno int
se divide en dos variables a
y b
.
PS: Estoy asumiendo sizeof(int)
= 4 bytes, y 1 byte = 8 bits
struct s
{
int a:1;
int b:2;
int c:7;
};/*size of structure s is 4 bytes and not 4*3=12 bytes since all share the same space provided by int declaration for the first variable.*/
struct s1
{
char a:1;
};/*size of struct s1 is 1byte had it been having any more char _var:_val it would have been the same.*/