#include <stdio.h>
struct Test
{
int a:4;
char ch:1;
};
struct A
{
int a;
char ch;
};
int main()
{
printf("sizeof(struct Test)=%d\n",sizeof(struct Test));
printf("sizeof(struct A)=%d\n",sizeof(struct A));
struct Test t1={0};
//printf("sizeof(t1.a)=%d\n",sizeof(t1.a));//编译出错
t1.a=15;//二进制的1111,按照有符号数就是-1
t1.ch=3;
printf("t1.a=%d\n",t1.a);
printf("t1.ch=%d\n",t1.ch);
printf("0x%X\n",*((unsigned int*)&t1));
return 0;
}
以上代码在64位的linux上gcc编译后的运行结果为:
sizeof(struct Test)=4
sizeof(struct A)=8
t1.a=-1
t1.ch=-1
0x1F