![](/img/trans.png)
[英]What is the behavior of C89 with respect to integer division of two negative numbers: round up, round down or not defined?
[英]What is the behavior of integer division?
例如,
int result;
result = 125/100;
或者
result = 43/100;
结果会永远是分区的底线吗? 定义的行为是什么?
结果会永远是分区的底线吗? 定义的行为是什么?
不完全的。 它向 0 舍入,而不是地板。
6.5.5 乘法运算符
6当整数相除时,/ 运算符的结果是代数商,其中任何小数部分都被丢弃。 88)如果商 a/b 是可表示的,则表达式 (a/b)*b + a%b 应等于 a。
和相应的脚注:
- 这通常被称为“向零截断”。
当然有两点需要注意:
3对操作数执行通常的算术转换。
和:
5 / 运算符的结果是第一个操作数除以第二个的商; % 运算符的结果是余数。 在这两种操作中,如果第二个操作数的值为零,则行为未定义。
[注:强调我的]
是的,结果总是被截断为零。 它将朝着最小的绝对值四舍五入。
-5 / 2 = -2
5 / 2 = 2
对于无符号和非负符号值,这与 floor 相同(向 -Infinity 舍入)。
结果为负数时,C 向 0 截断而不是取整——我读到这篇文章,了解为什么 Python 整数除法总是在这里取整: Why Python's Integer Division Floors<\/a>
"结果会永远是分区的底线吗?
<\/blockquote>不会。结果会有所不同,但只有负值才会发生变化。
定义的行为是什么?
为了清楚地向负无穷大取整,而整数除法向零取整(截断)
对于正值,它们是相同的
对于负值,这是不同的
我知道人们已经回答了你的问题,但是用外行的话:
5 \/ 2 = 2<\/code> \/\/因为 5 和 2 都是整数,整数除法总是截断小数
5.0 \/ 2 or 5 \/ 2.0 or 5.0 \/2.0 = 2.5<\/code> \/\/这里 5 或 2 或两者都有小数,因此您得到的商将是小数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.