struct st1{
int a:1; int b:3; int c:6; int d:3;
}s1;
struct st2{
char a:3;
}s2;
int main(){
printf("%d : %d",sizeof(s1),sizeof(s2));
getchar();
}
我得到的输出作为2:1C尺寸结构
你会告诉我,这是如何计划的运作方式和什么用的:运算符(1)在这里。
谢谢
struct st1{
int a:1; int b:3; int c:6; int d:3;
}s1;
struct st2{
char a:3;
}s2;
int main(){
printf("%d : %d",sizeof(s1),sizeof(s2));
getchar();
}
我得到的输出作为2:1C尺寸结构
你会告诉我,这是如何计划的运作方式和什么用的:运算符(1)在这里。
谢谢
的:
限定bit-field。
在您的例子,struct st1
类型的对象在由所述编译器选择一些装置使用13位。
时编译的代码所选择的特定布置起源占用2个字节的对象。的13位不一定是那些字节的第一(或最后)。
其他结构类型(struct st2
)占据(3个比特退出)1个字节。
的:
运营商那里使用指定位大小字段包含有。 sizeof()
返回字节边界的长度,所以对于第一,13位(2个字节),和用于所述第二,1个字节。
有至少价值两件事情在这里指出:
你的'printf'语句不正确,一个好的编译器可能会给你一个警告......'size_t'的格式说明符是'%zu','size_t'的大小'z'和'u'因为这是一个无符号值。 –