整数除法的行为是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

例如,

int result;

result = 125/100;

result = 43/100;

结果永远都是除法的结果吗?定义的行为是什么?

提问于
用户回答回答于

结果永远都是除法的结果吗?什么是定义的bahavior?

是的,两个操作数的整数商。

6.5.5乘法算子六当整数被除法时,/运算符的结果是任何小数部分丢弃的代数商。88)如果商a/b是可表示的,则表达式(a/b)*B+a%b等于a。

以及相应的脚注:

这通常被称为‘向零的截断’。

当然,有两点需要注意:

通常的算术转换是在操作数上执行的。

运算符的结果是第一个操作数除以第二个操作数的商;%运算符的结果是剩余。在这两个操作中,如果第二个操作数的值为零,则行为未定义。

用户回答回答于

如果任一操作数为负数,则无论/运算符的结果是小于代数商的最大整数还是大于代数商的最小整数,都是实现定义的,如%运算符结果的符号。如果商a/b是可表示的,则表达式(a/b)*B+a%b等于a。

C89编译器卡住时,请注意负数。

扫码关注云+社区