C ++标准以什么方式(如果有)限制未定义行为的影响?例如,在下面的代码中,从第一个if检查undefined是否将控制流约束为遵循then路径或else路径?是否可以跳过这两个路径?执行两个路径(可能并行执行)?跳到第二个if的中间吗?

void f(int undefined) {
    bool startNuclearWar = true;

    if (undefined > 0) {
        printf("True path\n");
        startNuclearWar = false;
    } else {
        printf("False path\n");
        startNuclearWar = false;
    }

    if (startNuclearWar) {
        lauchMissles();
    }
}

最佳答案

该标准对UB没有限制。当您执行任何调用UB的操作时,该标准不会保证发生任何事情。

关于c++ - 了解未定义行为的范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49435323/

10-13 07:24