做网络芯片开发等低端开发和网络协议栈的时候用的非常的多
举个简单的例子
我们有个32位的一个变量A
而我们还可能需要用到A的低16位AL
这个时候我们就可以定义一个联合就可以表示AL了
若16需再次划分,那么可以在联合中再次用一次联合
写个例子你看下
1 #include <stdio.h>
2
3 typedef union
4 {
5 unsigned int Ax;
6 struct AX
7 {
8 unsigned int AL:16;
9 unsigned int AH:16;
10 }sAX;
11 }example;
12
13 int main(void)
14 {
15 example a;
16 a.Ax = 0xAFAFBEBE;
17
18 int i = a.sAX.AH;
19 printf("AX = 0x%X, AH = 0x%X, AL = 0x%X\n", a.Ax, a.sAX.AH, a.sAX.AL);
20
21 return 0;
22 }
23
24
2
3 typedef union
4 {
5 unsigned int Ax;
6 struct AX
7 {
8 unsigned int AL:16;
9 unsigned int AH:16;
10 }sAX;
11 }example;
12
13 int main(void)
14 {
15 example a;
16 a.Ax = 0xAFAFBEBE;
17
18 int i = a.sAX.AH;
19 printf("AX = 0x%X, AH = 0x%X, AL = 0x%X\n", a.Ax, a.sAX.AH, a.sAX.AL);
20
21 return 0;
22 }
23
24