C语言中,一段简单的代码求解

[复制链接]
查看11 | 回复1 | 2011-6-27 02:10:33 | 显示全部楼层 |阅读模式
#includestdio.h
intf(floatx){return(x1.3);}
main()
{floata;a=f(2.4);printf(\"%f\",a);}


输出结果是3.000000,如果把最后的printf(\"%f\",a);中的%f改成%d,结果就成为0.000000,求解
回复

使用道具 举报

千问 | 2011-6-27 02:10:33 | 显示全部楼层
第一种情况很好理解,因为函数的返回类型是int,所以2.41.3=3.7其变成整型后为3,C语言不会四舍五入,只会简单的进行截尾处理,所以a=3,但是float会默认输出6位小数,所以为
3.000000.
但是第二种情况,应该是所占字节位数的原因,因为int和float所占的字节位数不一样,printf输出时,自动将float提升为double型,而根据不同的机型,分为高端和低端存储格式,在intel系统中为低端系统,我的表达能力有限,你看下下面这个网址,解释的比较清楚:
<ahref=\"http://apps.hi.baidu.com/share/detail/30515105\"target=\"_blank\">http://apps.hi.baidu.com/share/detail/30515105</a>
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行