#include <stdio.h>
union V
{
struct X
{
unsigned char s1:1;
unsigned char s2:1;
unsigned char s3:4;
} x;
unsigned char s1:1;
unsigned char s2:1;
unsigned char s3:4;
unsigned char c;
} v;
int main()
{
v.c = 108; // 0110 1100
// v.c = 108 + 2; // 0110 1110
printf("%d\n", v.x.s3); // 小端,内存从右到左依次分配 v.x.s1:0, v.x.s2:0, v.x.s3:11
printf("%d\n", v.s3); // 小端,内存都从最右边同一位置开始分配(共用)
printf("%d\n", v.x.s2);
printf("%d\n", v.s2);
return 0;
}
output:
11
12
0
0
 
union 内存分配:等您坐沙发呢!