2016-02-08 96 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

相關問題