首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个简单而复杂的有关问题

2013-12-26 
一个简单而复杂的问题printf(%d,4.0)这个语句为什么会后面的数字不一样会输出不一样的结果?末尾为单位

一个简单而复杂的问题
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

热点排行