我指的是问题“ "IF" argument evaluation order? ”,以了解c ++中“ if”语句的评估顺序。
这是代码,其中if语句中的条件以错误的顺序求值。
#include <iostream>
using namespace std;
int main()
{
int t = 0;
if((1 / t) == 1 && t != 0)
{
cout << "0" << endl;
}
cout << "1" << endl;
return 0;
}
结果为1而不是浮点异常。
答案 0 :(得分:19)
答案 1 :(得分:6)
除以零并不保证每次程序都会引发运行时错误。这就是为什么除以零是不确定的行为。
作为C标准状态; </ p>
/运算符的结果是第一个操作数除以第二个操作数所得的商; %运算符的结果是余数。在这两个操作中,如果第二个操作数的值为零,则行为是不确定的。
对于C ++(03-5.6.4);
二进制/运算符得出商,二进制%运算符得出除法的余数 第一个表达式的第二个。如果/或%的第二个操作数为零,则行为不确定。除此以外 (a / b)* b + a%b等于a。如果两个操作数均为非负数,则其余为非负数; 如果不是,则其余符号由实现定义