2011-01-16 24 views

Respuesta

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; 
} 
10
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

2
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.*/