C语言中共用体问题
uniondt{inta;charb;doublec;}data;程序段:data.a=5;printf("%f\n",data.c);输出结果为5.00000请问这个输...
union dt { int a; char b; double c; }data;
程序段:data.a=5;printf("%f\n",data.c);输出结果为5.00000
请问这个输出结果为什么错了?
谢谢~~
b和c应该是可以根据他们的定义输出值的吧,还有我不太明白为什么那位同学的c=0.可不可以再说清楚一点?谢谢!! 展开
程序段:data.a=5;printf("%f\n",data.c);输出结果为5.00000
请问这个输出结果为什么错了?
谢谢~~
b和c应该是可以根据他们的定义输出值的吧,还有我不太明白为什么那位同学的c=0.可不可以再说清楚一点?谢谢!! 展开
4个回答
展开全部
楼主的意思是数出的结果应该是5.00000这个结果吧!
其实不然,首先你要理解共用体的含义,它不是表示共用体能够同时放入三个不同类系的数据。共用体实际上只有一个存储单位,在每一个瞬间只有一个类型的数据被存入里面,也就是它才起作用,你这里把data.a=5,说明共用体中整形数被赋值,这里的data.b,data.c就不存在了,所以只能正常的输出a的值,而数出b和c的值都是错误的。
如果你再赋值data.b='d',那么这个共用体的值就是d,其它两个类型不起作用。也就是说,共用体的数据在某一个瞬间只有一个数据类型其作用,其它几种都是不存在的!
其实不然,首先你要理解共用体的含义,它不是表示共用体能够同时放入三个不同类系的数据。共用体实际上只有一个存储单位,在每一个瞬间只有一个类型的数据被存入里面,也就是它才起作用,你这里把data.a=5,说明共用体中整形数被赋值,这里的data.b,data.c就不存在了,所以只能正常的输出a的值,而数出b和c的值都是错误的。
如果你再赋值data.b='d',那么这个共用体的值就是d,其它两个类型不起作用。也就是说,共用体的数据在某一个瞬间只有一个数据类型其作用,其它几种都是不存在的!
展开全部
共用体类型数据的特点:
1) 同一个内存段可以存放几种不同类型的成员
2) 共用体变量中起作用的成员是最后一次存放的成员
3) 不能对共用体变量名赋值,不能在定义时初始化。
4) 不能把共用体变量作为函数参数
5) 共用体类型可以出现在结构体定义中,反之也可,也可以定义共用体数组。
另外,结构体名可以作为参数,而共用体名不可以。
1) 同一个内存段可以存放几种不同类型的成员
2) 共用体变量中起作用的成员是最后一次存放的成员
3) 不能对共用体变量名赋值,不能在定义时初始化。
4) 不能把共用体变量作为函数参数
5) 共用体类型可以出现在结构体定义中,反之也可,也可以定义共用体数组。
另外,结构体名可以作为参数,而共用体名不可以。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a=5,干嘛输出c!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询