c++ - 除以零后的余数

标签 c++ c integer-division

我知道数学中不允许除以零,但我可以使用零取模吗?我应该得到什么答案?

例如

10%0 = ?
5%0 = ?

最佳答案

标准将其定义为“未定义”。

在几乎所有处理器中,模运算的执行功能与除法相同。在现代较大的处理器中,它是一条指令(例如 x86)。大多数情况下,这条指令在除以零时会导致陷阱,这适用于代码是“打算使用模数”还是“商”部分。

它是未定义的,因此处理器和编译器可以自由地实现他们喜欢的东西——例如如果处理器只是返回输入的任何内容,那也是允许的,或者如果它导致整个操作系统崩溃,那么按照标准,这也“很好”。

总而言之,对零取模与除以零一样糟糕。

(请注意,通常情况下, float 除以零不会 [默认] 陷入陷阱并产生无穷大值,除非除以的值也为零,在这种情况下你会得到“不是数字”)

关于c++ - 除以零后的余数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22275684/

相关文章:

c++ - C++ 中的系统调用问题

c++ - 未定义对类卡的引用

c++ - 编译代码和 "save"库版本

c - int var[] 和 int var[0] 有什么区别

将 int 转换为 'C' 中的 int[]

c++ - 在 EXPECT_CALL 中使用变量

c - 如何将 memcpy 转换为 memcpy_s?

编程语言中除以 1

algorithm - 用余数树计算许多余数