我正經歷以K & R中的例子,偶然發現了這段代碼:爲什麼在這裏不會發生整數除法截斷?
celcius=5 * (fahr-32)/9;
撰文人說,我們不能用5/9,因爲整數除法截斷會導致的價值0.
但是,程序在fahr = 0時輸出17作爲答案。通過我的計算,(0-32)/ 9應該導致-3(由於截斷),然後-3 * 5 = -15,而不是-17。爲什麼會發生?
我正經歷以K & R中的例子,偶然發現了這段代碼:爲什麼在這裏不會發生整數除法截斷?
celcius=5 * (fahr-32)/9;
撰文人說,我們不能用5/9,因爲整數除法截斷會導致的價值0.
但是,程序在fahr = 0時輸出17作爲答案。通過我的計算,(0-32)/ 9應該導致-3(由於截斷),然後-3 * 5 = -15,而不是-17。爲什麼會發生?
(0 - 32)首先乘以5,得到-160。 -160/9 = -17。
筆者說的是,人們不應該使用
celsius = (fahr-32)*(5/9);
至於你的問題,
celsius = 5 * (fahr-32)/9;
不同於
celsius = 5 * ((fahr-32)/9);
在後面的情況下,當fahr=0
確實會得到-15
。