在C语言中1/(a*b*c)和1/a/b/c的区别

来源:百度知道 编辑:UC知道 时间:2024/06/10 12:59:31
大虾帮帮忙啊^这个是要命的^

就数学上来说一样

1/a/b/c = ((1/a)/b)/c = 1/(a*b*c)

但是在c里面精确度上会出现不同结果

比如都是int

100/200/0.001 = (100/200)/0.0001 = 0/0.0001 = 0

但是100/(200*0.001) = 100/0.2 = 500

运算顺序不一样,前者先算括号里面的;后者从左向右计算。

运算顺序不同,加括号代表优先运算a*b*c,然后在用1除,而1/a/b/c则是自左向右一项一项的除.

……在数学上怎么算,在C语言里就怎么算。
但如果a b c是整型的话,舍去小数点以后的位(只是单纯的舍,即使是1.9,也会算为1)

如果是整数型的话
需要注意的就是
两个整数相除 结果还是整数 会四舍五入
两个数相乘 可能出现溢出

明白这两个之后 因为运算顺序的先后就知道区别在哪里了