您的位置:首页 > 其它

c 联合 union

2012-08-24 17:33 183 查看
总结:联合里面不管你有多少个变量,最终给予分配的空间只有一个被最终赋值的那个变量值的空间

#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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c initialization