2011-01-16 61 views

Trả lời

16

Đây là bitfield.

Bitfield cụ thể này không có ý nghĩa nhiều vì bạn chỉ có thể sử dụng loại 16 bit và bạn đang lãng phí một số không gian khi bitfield được đệm thành kích thước int.

Thông thường, bạn đang sử dụng nó cho các cấu trúc có chứa yếu tố kích thước bit:

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

Nó có nghĩa a được định nghĩa là 16-bit không gian bộ nhớ. Các bit còn lại (16 bit) từ int có thể được sử dụng để định nghĩa một biến khác, nói b, như thế này:

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

Vì vậy, nếu int là 32-bit (4 byte), sau đó ký ức của một int được chia thành hai biến số ab.

PS: Tôi giả định sizeof(int) = 4 byte và 1 byte = 8 bit

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.*/ 
Các vấn đề liên quan