在C语言中(1/2)*(a+b)*h和 (a+b)*h*(1/2)为什么结果不一样?第一个结果是0,第二个就不是.

 我来答
窗边消失的糖
2012-08-06 · 超过19用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:61.7万
展开全部
你是不是a,b取的都是整形(int类型)?这是(1/2)*(a+b)*h中先算(1/2)*(a+b)。如果这个数小于0.5就会自动四舍五入变为零。所以再乘h还是零。而后面一种先算(a+b)*h再除以二。所以不为零
追问
恩  后面的括号(1/2)一算不也是0吗?不能这样算吗?
追答
你能把完整的程序片段给我一下么?我帮你看一下
wangwang1244
2012-08-06 · 超过35用户采纳过TA的回答
知道答主
回答量:206
采纳率:0%
帮助的人:128万
展开全部
完整的代码才好说,C语言如果无运算符的优先顺序式子是从左向右算,变量为整型,则只存整数位,小数位去掉,9.9则为9。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1cf58ab
2012-08-06 · TA获得超过343个赞
知道小有建树答主
回答量:276
采纳率:50%
帮助的人:366万
展开全部
结果是一样的。
因为 (1/2)=0,一个式子不论是先乘 0 还是后乘 0都一个结果。
我刚才用 VC2003运行后验证,结果一样。
你的代码是什么?能不能发给我学一下?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
曾经风情
2012-08-06
知道答主
回答量:9
采纳率:0%
帮助的人:9037
展开全部
a,b,h是哪个类型的?整型?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式