2011-01-16 10 views

Antwort

16

Dies ist ein bitfield.

Dieses spezielle Bitfeld macht nicht viel Sinn, da Sie nur einen 16-Bit-Typ verwenden können und Sie verschwenden etwas Platz, da das Bitfeld auf die Größe int aufgefüllt wird.

Normalerweise Sie verwenden es für Strukturen, die Elemente der Bitgröße enthalten:

struct { 
    unsigned nibble1 : 4; 
    unsigned nibble2 : 4; 
} 
10
struct name { int a:16; } 

Es bedeutet a wird als 16-Bit- Speicherraum definiert. Die verbleibenden Bits (16 Bits) von int kann definiert anderen Variablen verwendet werden, sagen b, wie folgt aus:

struct name { int a:16; int b:16; } 

Wenn also int ist 32 Bit (4 Byte), so wird der Speicher einer int geteilt in zwei Variablen a und b.

PS: Ich gehe davon aus sizeof(int) = 4 Bytes und 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.*/