关于数据类型不匹配的一个超简单问题
int a=3;
float b=4.5;
printf( "%f %d\n ",a,b);
编译时不出错,但结果为 0.000000 16402
为什么会出现这个结果? 尤其是 整型a 用符点型输出时,就算类型不匹配,也不应该是0.000000呀?
多谢前辈请给笨蛋详细的指导。多谢。
[解决办法]
没明白为什么会出现0。000000 有没有人帮我解释一下呀
==========
按照IEEE单精度浮点数格式,最高位是符号位,接下来8位是指数位,剩下的23位是尾数位
所以整数3,0x00000003表示的浮点数就是
2^{-127} * (1.0 + 2^{-22} + 2^{-23})
这个数是一个非常小的数,显示出来就是0.000000啦
具体细节请参考
http://en.wikipedia.org/wiki/IEEE_754