关于C语言中的共用体的问题

下面是谭浩强书中的一段程序
union Date
{ int i;
char ch;
float f;
} a;
a.i=97
然后使用输出语句输出
printf("%d",a.i); (输出整数97)
printf("%c",a.ch); (输出字符‘a’)
printf("%f",a.f); (输出实数0.000000)
我没有看懂 为什么最后一个printf("%f",a.f)语句输出的是0.000000,这是为什么呢?

共用体定义:在进行某些算法的C语言编程的时候,需要使几种不同类型的变量存放到同一段内存单元中。也就是使用覆盖技术,几个变量互相覆盖。
也就是共用体的占用内存就是其中占用内存最大的数据类型。所以i,ch,f在同一个内存空间中。int和char ascii码的不同表现形式,只是形式不同,内存中的二进制是相同的。那么int怎么变成float型呢,这又没有一个ascii码表进行转换,所以,f就是0.00000了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-15
学习了!
相似回答