一个简单而复杂的问题
printf("%d",4.0);
这个语句为什么会后面的数字不一样会输出不一样的结果?
末尾为单位数 1 3 5 。。。 为正位数
末尾为双位数偶数 2 4 6.。。。 为负数 。。
why??
知道的告诉声嘛~
[解决办法]
这要看系统和编译器是如何实现浮点数的存放的
不过多数系统是IEEE浮点标准吧
[解决办法]
4.0被当做浮点数,浮点数存储和整数不一样
[解决办法]
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。
搜“浮点表示法”
1.0→00 00 00 00 00 00 F0 3F
2.0→00 00 00 00 00 00 00 40
3.0→00 00 00 00 00 00 08 40
4.0→00 00 00 00 00 00 10 40
5.0→00 00 00 00 00 00 14 40
6.0→00 00 00 00 00 00 18 40