联合体
原文地址:http://www.cnblogs.com/takeaction/archive/2010/12/26/1917050.html
举个简单的例子
我们有个32位的一个变量A
而我们还可能需要用到A的低16位AL
这个时候我们就可以定义一个联合就可以表示AL了
若16需再次划分,那么可以在联合中再次用一次联合
写个例子你看下
#include <stdio.h>
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;
}
编译:Makefile
ll:main
main:main.c
gcc -g -Wall -O0 main.c -o main
*******output********
AX = 0xAFAFBEBE, AH = 0xAFAF, AL = 0xBEBE
完