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&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...