例如,
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
对于无符号和非负有符号值,这与下限相同(向 -Infinity 舍入)。
当结果为负数时,C 会向 0 截断而不是向下取整 - 我在这篇文章中了解到为什么 Python 整数除法总是向下取整:为什么 Python 的整数除法向下取整
结果总是分区的下限吗?
不。结果会有所不同,但只有负值才会发生变化。
定义的行为是什么?
为了清楚起见,下限舍入到负无穷大,而整数除法舍入到零(截断)
对于正值,它们是相同的
int integerDivisionResultPositive= 125/100;//= 1
double flooringResultPositive= floor(125.0/100.0);//=1.0
对于负值,这是不同的
int integerDivisionResultNegative= -125/100;//=-1
double flooringResultNegative= floor(-125.0/100.0);//=-2.0
我知道人们已经回答了你的问题,但用外行的话来说:
5 / 2 = 2
//因为5和2都是整数,并且整数除法总是截去小数
5.0 / 2 or 5 / 2.0 or 5.0 /2.0 = 2.5
//这里5或2或两者都有小数,因此你得到的商将是小数。