2016-02-08 53 views
1

我正经历以K & R中的例子,偶然发现了这段代码:为什么在这里不会发生整数除法截断?

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

撰文人说,我们不能用5/9,因为整数除法截断会导致的价值0.

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

回答

3

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

3

笔者说的是,人们不应该使用

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


至于你的问题,

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

不同于

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

在后面的情况下,当fahr=0确实会得到-15

相关问题