问题遇到的现象和发生背景
共用体变量起作用的成员是最后一个被赋值的成员,第一个程序最后一个被赋值的成员是s.income = 10.2,所以s.age的输出结果应该是10,为什么输出结果不对?
第二个程序最后一个是5,那么1.2就会被5覆盖掉,为什么两种不同的输出格式,1.2和5都输出了?结果不应该是5.0000和5吗?
遇到的现象和发生背景,请写出第一个错误信息
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#include <stdio.h>
union u
{
char *name;
int age;
double income;
} s;
int main()
{
s.name = "WANGLING";
s.age = 28;
s.income = 10.2;
printf("%d\n", s.age);
return 0;
} //以上是第一个程序
#include <stdio.h>
union dt
{
int a;
char b;
double c;
} data, data1;
int main()
{
data.c = 1.2;
data.a = 5;
printf("%lf\n", data.c);
printf("%d\n", data.c);
return 0;
} //以上是第二个程序
运行结果及详细报错内容
1717986918 //第一个程序输出的结果
1.200000
5 //第二个程序输出的结果