c - 为什么这里不发生整数除法截断?

标签 c truncation kernighan-and-ritchie

我在浏览 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。

关于c - 为什么这里不发生整数除法截断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35273868/

相关文章:

使用套接字在两台计算机之间复制目录

c - C 中的内联汇编 : Dynamic registers

c - 如何在函数文件和项目文件中正确包含自己的库

c - 什么是尾随空格和制表符? K&R 练习 1.18

javascript - chop 长字符串的聪明方法

c - K&R C 示例中的指针类型不匹配警告

c++ - 当你不遵循 argv 和 argc 的做法时会发生什么

c - 填充该结构的最佳方法是什么?

ios - UITextView 上的 NSLineBreakByTruncatingTail 删除换行符

Java:MySQL 数据截断:不正确的双值:列的 ''