11问答网
所有问题
在C语言中(1/2)*(a+b)*h和 (a+b)*h*(1/2)为什么结果不一样?第一个结果是0,第二个就不是.
如题所述
举报该问题
推荐答案 2012-08-06
你是不是a,b取的都是整形(int类型)?这是(1/2)*(a+b)*h中先算(1/2)*(a+b)。如果这个数小于0.5就会自动四舍五入变为零。所以再乘h还是零。而后面一种先算(a+b)*h再除以二。所以不为零
追问
恩 后面的括号(1/2)一算不也是0吗?不能这样算吗?
追答
你能把完整的程序片段给我一下么?我帮你看一下
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://11.wendadaohang.com/zd/Svq4MSS88.html
其他回答
第1个回答 2012-08-06
完整的代码才好说,C语言如果无运算符的优先顺序式子是从左向右算,变量为整型,则只存整数位,小数位去掉,9.9则为9。
第2个回答 2012-08-06
结果是一样的。
因为 (1/2)=0,一个式子不论是先乘 0 还是后乘 0都一个结果。
我刚才用 VC2003运行后验证,结果一样。
你的代码是什么?能不能发给我学一下?
第3个回答 2012-08-06
a,b,h是哪个类型的?整型?
相似回答
(a+b)*h*1
/2
与1
/
2*(a+b)*h
在C语言中为什么
计算
结果不
相同
答:
很多原因,
比如说数据类型不对啊,或者精度不够啊
,最大的可能是你的数用二进制表达的是无限小数
大家正在搜
c语言中0和1代表什么
c语言是什么语言
c语言中?是什么意思
c语言中\0是什么意思
C语言是什么
c语言中%o什么意思
在C语言中
c语言中?:怎么用
c语言中或怎么表示
相关问题
(a+b)*h*1/2 与1/2*(a+b)*h 在C语言中...
以下C语言表达式中与代数式1/2(a+b)h计算结果不相符的...
float a=2,b=4,h=3; (1/2)*(a+b)...
c语言中的问题?
C语言问题
C语言:float a=2,b=4,h=3 (1/2)*(a...
float a=2,b=4,h=3;以下C语言表达式中与代数...
c语言问题?