C++11 C++;sizeof(结构)
代码如下:C++11 C++;sizeof(结构),c++11,C++11,代码如下: #include <stdio.h> int main(){ struct{ unsigned char a:4; unsigned char b:4; }i; struct{ unsigned char a:4; unsigned char b:4; unsigned char c:4; }j; i.a = 1; i.b = 1; j.a = 1; j.b = 1; j.c = 1
#include <stdio.h>
int main(){
struct{
unsigned char a:4;
unsigned char b:4;
}i;
struct{
unsigned char a:4;
unsigned char b:4;
unsigned char c:4;
}j;
i.a = 1;
i.b = 1;
j.a = 1;
j.b = 1;
j.c = 1;
printf("size of i is: %d, size of j is: %d", sizeof(i), sizeof(j));
return 0;
}
#包括
int main(){
结构{
无符号字符a:4;
无符号字符b:4;
}一,;
结构{
无符号字符a:4;
无符号字符b:4;
无符号字符c:4;
}j;
i、 a=1;
i、 b=1;
j、 a=1;
j、 b=1;
j、 c=1;
printf(“i的大小为:%d,j的大小为:%d”,sizeof(i),sizeof(j));
返回0;
}
为什么输出是12?表示i的大小为1字节,j的大小为2字节。我们知道无符号字符有1个字节,为什么我不等于2?对不起,我的英语不好。C++中的所有变量都被填充到下一个字节。 在struct
i
中,a
和b
都是4位的,总计为1字节
在j
中,变量的总和为12位,但由于填充,大小为2字节
参考: