我的代码:
long long difft, intrv ;
cout << "difft = " << difft << endl;
cout << "intrv = " << intrv << endl;
cout << "difft mod intrv = " << difft%intrv << endl;
输出:
difft = 0
intrv = 0
difft mod intrv = 1
0%0的结果为零,但在我的代码中结果是“1”,为什么?
答案 0 :(得分:9)
在 C ++ 中,任何mod 0
的结果都是undefined behavior,来自draft C++ standard部分5.6
Multiplicative运算符段 4 说(强调我的):
二元/运算符产生商,二元%运算符从第一个表达式除以第二个表达式得到余数。 如果/或%的第二个操作数为零,则行为未定义。 [...]
此外,使用未初始化的变量也是未定义的行为,因此该程序的行为是不可预测的。
答案 1 :(得分:6)
这是未定义的行为,因为modulo涉及除零。
答案 2 :(得分:1)
你不能除以0!这是一个编译器错误,它允许你这样做。这就是你看到1的原因。