c中的“if”语句不会从左到右评估条件

前端之家收集整理的这篇文章主要介绍了c中的“if”语句不会从左到右评估条件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在提到问题“ “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而不是浮点异常.

解决方法

除零是未定义的行为.任何事情都可能发生.

[expr.mul]/4

If the second operand of / or % is zero the behavior is undefined.

猜你在找的C&C++相关文章