我正经历以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
。