C语言共用体赋值输出疑问

union{

           int i; 

           char c;

           float f;

} u;

u.i=97;

printf("%c",u.c);

printf("%f",u.f);

初学者,请问各位第一个输出能输出字符a,为什么第二个输出是0.00000

union的长度取决于最长的float,那么这个u占据4个字节。那么他们对齐之后,如果按照u.i=97来存储,那么第一个字节就是97,取成c的话,就是字符‘a’,取成f的话,那么按照float在内存中的表示,前9位表示符号和指数,后面是尾数,本例中符号和指数计算出来的值很小,无法显示而已就成了0.00000。

char只取一个字节的数据,存储空间是申请float类型的,应该是4个或者2个字节的数据。所以取值就为0

97对应的浮点数如图,很小所以你看到的就是0.0000

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632