thể trùng lặp:
What does 'unsigned temp:3' mean?điều này có nghĩa là gì trong c int a: 16 ;?
xin gì ký hiệu này có nghĩa là
int a: 16;
Tôi thấy mã này giống như mã này và biên dịch.
tên cấu trúc { int a: 16; }
thể trùng lặp:
What does 'unsigned temp:3' mean?điều này có nghĩa là gì trong c int a: 16 ;?
xin gì ký hiệu này có nghĩa là
int a: 16;
Tôi thấy mã này giống như mã này và biên dịch.
tên cấu trúc { int a: 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;
}
Đó là một bitfield.
Tôi chưa bao giờ thấy một bit bit 16 bit; thường là một đoạn ngắn.
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ố a
và b
.
PS: Tôi giả định sizeof(int)
= 4 byte và 1 byte = 8 bit
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.*/