http://bbs.freekaoyan.com/viewthread.php?tid=193025
main()
{float x,y;
x=5:
y=3;
printf("x=%d y=%d\n",x,y);
}
最后的运行结果为什么是x=0 y=0?我不明白啊,希望各位高手赐教!
---------------------------------
可能强制转换类型的问题把
用"x=%f y=%f \n",x,y
试试看
---------------------------------
看一下浮点数在内存中的存储形式就知道了..
---------------------------------
详细给楼主说一下吧!
0 10000110 00001010000000000000000 是5的浮点数在内存中的存储形式。
数符 阶码 尾数
1位 8位 23位
这个是偏移量为127算得,因为阶码是按移码形式存储。
因为浮点数在内存中也是以补码形式存储。所以转换成源码
0011110011111011 0000 0000 0000 0000 输出
"%d"是按整形输出,所以截取后16位0000000000000000输出,所以输出0。
谢谢我吧,累死了!
