c深入思考问题

[复制链接]
查看11 | 回复2 | 2008-12-17 19:48:57 | 显示全部楼层 |阅读模式
以下程序输出结果为多少?要的是解释。
main()
{float a,b;
a=123456.789e5;
b=a+20;
printf("%f\n",b);
getch();
}

回复

使用道具 举报

千问 | 2008-12-17 19:48:57 | 显示全部楼层
运行结果是不确定的。原因如下:直接原因:因为代码里b没有赋初始值,所以是直接以未初始化的值代入运算的,所以运行结果是不确定的。一点注意:float a;a=123456.789e5;这么赋值也是有一点问题的,由于a是float型,有效小数位为5位(后面的四舍五入),并且e表达式默认的整数位为1位,所以你上述的赋值语句后,a实际被赋值为:1.23457e10可以输出a看一看...
回复

使用道具 举报

千问 | 2008-12-17 19:48:57 | 显示全部楼层
123456.789e5自己去看浮点数存储结构...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行