c=5*(f-32)/9与c=5/9*(f-32)有何不同

来源:百度知道 编辑:UC知道 时间:2024/09/28 13:47:57
在C语言编程的时候

谢谢回答

有不同的。。。
假设f是41的话,41-32 = 9
所以第一个式子是
5*9/9 = 45/9 = 5
而第二个式子是
5/9*9 = 0 * 9 (注意是0) =0
出现这样的原因是因为 / 操作符两个操作数都为int的时候,结果也为int,所以5/9 截去就成了0了。
建议:对于整数,先做完全部乘法再做除法以减少误差,或者就用double强制转换,例如 c = (double)5 / 9 * (f-32); //这样会有一个double到int转换精度丢失的warning,不过不影响执行

没有不同

一样吧!