整数除法的行为是什么?

整数除法的行为是什么?

例如,

int result;result = 125/100;

要么

result = 43/100;

结果总会成为师的底线吗?什么是定义的行为?


明月笑刀无情
浏览 751回答 4
4回答

ABOUTYOU

结果总会成为师的底线吗?什么是定义的行为?是,两个操作数的整数商。6.5.5乘法运算符6当整数被分割时,/运算符的结果是代数商,丢弃任何小数部分。88)如果商a / b是可表示的,则表达式(a / b)* b + a%b应等于a。以及相应的脚注:88)这通常被称为“截断为零”。当然要注意的两点是:3通常的算术转换是在操作数上执行的。和:5 /运算符的结果是第一个操作数除以第二个操作数的商; %运算符的结果是余数。在这两个操作中,如果第二个操作数的值为零,则行为未定义。[注意:强调我的]

守着一只汪

Dirkgently给出了 C99中整数除法的优秀描述,但是您也应该知道在C89中,带有负操作数的整数除法具有实现定义的方向。从ANSI C草案(3.3.5):如果任一操作数为负,则/运算符的结果是小于代数商的最大整数还是大于代数商的最小整数是实现定义的,这是%运算符的结果的符号。如果商a / b是可表示的,则表达式(a / b)* b + a%b应等于a。当你遇到C89编译器时,请注意负数。这是一个有趣的事实,C99选择截断为零,因为这是FORTRAN如何做到的。请参阅comp.std.c上的此消息。

慕码人2483693

在结果为负的情况下,C截断为0而不是地板 - 我学习了这个解释为什么Python整数除法总是落在这里:为什么Python的整数分区Floors

ITMISS

是的,结果总是被截断为零。它将朝着最小的绝对值四舍五入。-5 / 2 = -2  5 / 2 =  2对于无符号和非负有符号值,这与floor(向-Infinity舍入)相同。
打开App,查看更多内容
随时随地看视频慕课网APP