为什么整数除法不在此处发生?

时间:2016-02-08 15:58:39

标签: c truncation kernighan-and-ritchie

我正在浏览K& R中的示例,并偶然发现了这段代码:

apt-get install

作者说我们不能使用5/9,因为整数除法会导致值为0.

程序然而,当fahr = 0时输出17作为答案。根据我的计算,(0-32)/ 9应该导致-3(由于截断)然后-3 * 5 = -15,而不是-17。为什么会这样?

2 个答案:

答案 0 :(得分:3)

(0 - 32)首先乘以5,得到-160。 -160 / 9 = -17。

答案 1 :(得分:3)

作者所说的是不应该使用

celsius = (fahr-32)*(5/9);

关于你的问题,

celsius = 5 * (fahr-32) / 9;

不同

celsius = 5 * ((fahr-32) / 9);

在后一种情况下,-15时确实会得到fahr=0