参考:
C语言 | 位域的使用详解
测试代码
#includestruct pack { unsigned int a:2; // 取值范围为:0~3 unsigned int b:4; // 取值范围为:0~15 unsigned int c:6; // 取值范围为:0~63 }; union u1 //u1表示联合体类型名 { //unsigned int b; struct pack f; unsigned int b; }; int main(void) { struct pack pk1; struct pack pk2; // 给pk1各成员赋值并打印输出 pk1.a = 1; pk1.b = 10; pk1.c = 50; printf("%d, %d, %dn", pk1.a, pk1.b, pk1.c); // 给pk2各成员赋值并打印输出 pk2.a = 5; pk2.b = 20; pk2.c = 66; printf("%d, %d, %dn", pk2.a, pk2.b, pk2.c); printf("n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!n"); union u1 mytest; mytest.f.a=3; mytest.f.b=15; mytest.f.c=63; mytest.b = 3456; int sum = 3 + 15*4 + 63 * 64; printf("@@@@@@@ U2 mytest is %dn",sum); printf("U2 mytest is %dn",mytest); return 0; }



