总结:联合里面不管你有多少个变量,最终给予分配的空间只有一个被最终赋值的那个变量值的空间
#include "stdio.h"
union{
int a;
int b;
int c;
int d;
}x = {5,6,7,8};
main(){
printf("%d\n",x.a);
printf("%d\n",x.b);
printf("%d\n",x.c);
printf("%d\n",x.d);
}
输出: 从编译来看,它说后面都是多余元素
pateo@pateo-B86N53X:~/work/study$ cc main.c -o main
main.c:8: warning: excess elements in union initializer
main.c:8: warning: (near initialization for ‘x’)
main.c:8: warning: excess elements in union initializer
main.c:8: warning: (near initialization for ‘x’)
main.c:8: warning: excess elements in union initializer
main.c:8: warning: (near initialization for ‘x’)
pateo@pateo-B86N53X:~/work/study$ ./main
5
5
5
5
下面同样
#include "stdio.h"
union{
int a;
int b;
int c;
int d;
}x;
main(){
x.b = 5;
printf("%d\n",x.a);
printf("%d\n",x.b);
printf("%d\n",x.c);
printf("%d\n",x.d);
}
也是同样的输出:
pateo@pateo-B86N53X:~/work/study$ cc main.c -o main
pateo@pateo-B86N53X:~/work/study$ ./main
5
5
5
5
再演示一个
#include "stdio.h"
union{
int a;
int b;
int c;
int d;
}x;
main(){
x.b = 5;
x.c = 6;
printf("%d\n",x.a);
printf("%d\n",x.b);
printf("%d\n",x.c);
printf("%d\n",x.d);
}
输出:
pateo@pateo-B86N53X:~/work/study$ cc main.c -o main
pateo@pateo-B86N53X:~/work/study$ ./main
6
6
6
6