#include <stdio.h>
#include <memory.h>
typedef struct
{
int a:2;
int b:2;
int c:5;
int d:3;
int e:8;
int f:4;
unsigned int g:4;
}TEST;
int main()
{
struct test *p;
TEST t;
p =(struct TEST *) &t;
t.a = 1;
t.b = 3;
t.c = 1;
t.d = 3;
t.e = 3;
t.f = 9;
t.g = 9;
printf("sizeof(TEST) = %d/n",sizeof(TEST));
printf("t.a = %d/n",t.a);
printf("t.b = %d/n",t.b);
printf("t.c = %d/n",t.c);
printf("t.d = %d/n",t.d);
printf("t.e = %d/n",t.e);
printf("t.f = %d/n",t.f);
printf("t.g = %d/n",t.g);
}
运行结果:
sizeof(TEST) = 4
t.a = 1
t.b = -1
t.c = 1
t.d = 3
t.e = 3
t.f = -7
t.g = 9
Press any key to continue
解析:
t.a =01,所以t.a = 1
t.b = 11,所以t.b = -1
t.f = [1001]补码,所以t.f = [1111]原码,所以t.f = -7
t.g = 1001,又t.g 是unsigned int ,所以t.g = 9
如果理解有误,请指正,谢谢