参考: C语言 | 位域的使用详解
测试代码
#include <stdio.h> struct pack {
unsigned int a:2; // 值范围为:0~3 unsigned int b:4; // 值范围为:0~15 unsigned int c:6; // 值范围为:0~63 }; union u1 //u表示联合体类型名 {
//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, %d\n", pk1.a, pk1.b, pk1.c); // 给pk2各成员赋值,打印输出 pk2.a = 5; pk2.b = 20; pk2.c = 66; printf("%d, %d, %d\n", 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 %d\n"
,sum
)
;
printf
(
"U2 mytest is %d\n"
,mytest
)
;
return
0
;
}