#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 内存分配:等您坐沙发呢!