联合体union 有什么用?

做网络芯片开发等低端开发和网络协议栈的时候用的非常的多。

举个简单的例子
我们有个32位的一个变量A
而我们还可能需要用到A的低16位AL
这个时候我们就可以定义一个联合就可以表示AL了
若16需再次划分,那么可以在联合中再次用一次联合

写个例子你看下

#include 

typedef union 
{
 unsigned int Ax;
    struct AX
 {
  unsigned int AL:16;
  unsigned int AH:16;
 }sAX;
}example;

int main(void)
{
 example a;
 a.Ax = 0xAFAFBEBE;

 int i = a.sAX.AH;
 printf("AX = 0x%X, AH = 0x%X, AL = 0x%X\n", a.Ax, a.sAX.AH, a.sAX.AL);

 return 0;
}

你可能感兴趣的:(C/C++)