#include <stdio.h>
int main()
{
union check
{
char name;
float a;
int b;
}v = {33};
printf("%c\n", v.name);
printf("%.2f\n", v.a);
printf("%d\n", v.b);
}
请问,第二个输出中为什么会是0,不应该也为33吗?
因为float和int的编码格式不同啊
你需要恶补float的编码知识了
int有4个字节,里面存的是0,0,0,33
float也有4个字节,里面当然存的也是0,0,0,33
但是因为float是由有效数字和指数位组成的,最终编码结束是个非常小的小数,你只显示小数点后2位它当然是0了