use*_*586 1 c c++ integer-division
我知道在数学中不允许除零,但我可以使用0的模数,我应该得到什么答案?
例如
10%0 = ?
5%0 = ?
Run Code Online (Sandbox Code Playgroud)
Mat*_*son 10
该标准将其定义为"未定义".
在几乎所有处理器中,模数由与除法相同的功能执行.在现代较大的处理器中,它是一条指令(例如x86).大多数情况下,此指令在除以零时会产生陷阱,这适用于代码是"打算使用模"还是"商"部分.
它是未定义的,因此处理器和编译器可以自由地实现它们想要的东西 - 例如,如果处理器只返回输入的内容,也允许,或者如果它导致整个操作系统崩溃,那么"好"也是标准.
总之,零的模数与除以零一样糟糕.
(注意,通常情况下,浮点除以零不会捕获[默认],并产生无穷大值,除非分割的值也为零,在这种情况下,您得到"不是数字")
在C/C++中,它是未定义的行为,您可以根据编译器甚至同一程序的不同实例获得各种结果.
二元/运算符产生商,二元%运算符从第一个表达式除以第二个表达式得到余数.如果/或%的第二个操作数为零,则行为未定义