先举一个结构体的例子:
struct A//结构体
{
int a;
char b;
};//8
该结构体大小为8
联合体:存放顺序是所有成员都从低地址开始存放的
联合体成员的对齐方式要适合全部的成员
union B//联合体,共用体:所有的成员变量共用低地址
{
int a;
char b;
};
union X
{
int a;
struct
{
short b;
short c;
};
};
假设x.a的二进制表示为:0x20150810;
#include <stdio.h>
union X
{
int a;
struct
{
short b;
short c;
};
};
int main()
{
union X x;
x.a = 0x20150810;
printf("x.b=%x,x.c=%x\n",x.b,x.c);
return 0;
}
则该题会输出:x.b=810,x.c=2015
这是因为联合体所有的成员变量共用低地址
所以后四位0810在前,2015在后
所以输出:x.b=810,x.c=2015