小白问题

时间:2008-05-09 10:18:49   来源:论坛整理  作者:  编辑:chinaitzhe
不小心看到了这个代码
float i=123456.1234;
printf("%d %f %e %g\n",i,i,i,i);
printf("%d ",i);
printf("%f ",i);
printf("%e ",i);
printf("%g ",i);

结果是:

0 0.000000 5.387278e-315 5.38728e-315
0 123456.125000 1.234561e 05 123456

为什么结果中第一行和第二行不相同?
想不明白了~

网友回复:我猜测可能是因为第一个printf中i被%d截断的原因吧
网友回复:不过为什么没有改变i的值呢?
网友回复:第一行printf执行多个输出时,会从右至左对输出元素进行压入栈过程中数据i在内存中转换时出现问题
网友回复:多谢了~
关键字:白问题,

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面