关于结构体和联合的问题
#include<stdio.h>void main()
{
union exx
{
int a, b;
struct
{
int c,d;
}pp;
}e={30};
printf("%d,%d,%d,%d,%d\n",e.a,e.b,e.pp,e.pp.c,e.pp.d);
e.b=e.a+20;
printf("%d\n",e.b);
e.pp.c=e.a+e.b;
e.pp.d=e.a*e.b;
printf("%d,%d\n",e.pp.c,e.pp.d);
}
运行结果是
30,30,30,0,30
50
100,10000
想请问一下 e.a,e.b,e.pp,e.pp.c,e.pp.d 初始的值是怎么来的?
搜索更多相关的解决方案:
结构体
----------------解决方案--------------------------------------------------------
变量没有赋值,变量里面的数值是随机的.
----------------解决方案--------------------------------------------------------
赋初值了啊...楼上别乱说
----------------解决方案--------------------------------------------------------
union是所有的玩意存在同一个内存地址中的...楼主好好体会下...呵呵
----------------解决方案--------------------------------------------------------
所有的变量公用一个内存..好像你引用了不同变量其实是一个内存空间.....
----------------解决方案--------------------------------------------------------
违反规则,共用体变量不允许初始化呀!
我的教材不对.
----------------解决方案--------------------------------------------------------
union exx
{
int a, b;
struct
{
int c,d;
}pp;
}e={30};
e={30};
定义了一个叫e的union,然后马上赋值30...的确没初始化,呵呵
----------------解决方案--------------------------------------------------------
回复 2# 的帖子
要是随机的话 值是有变化的 也不会与开始e={30}有关系啊 ----------------解决方案--------------------------------------------------------
回复 7# 的帖子
那要是没初始化 那么e.a,e.b,e.pp,e.pp.c,e.pp.d的值是怎么来的?为什么e.pp.c是0,而e.pp.d的值是30?
----------------解决方案--------------------------------------------------------
回复 6# 的帖子
可以对第一个变量初始化啊 ----------------解决方案--------------------------------------------------------