关掉|| 运营商优化

0 c++ short-circuiting

有没有在VS C++ 2017年的任何选项,这样,当它建立了下面的程序都f()g()被称为?

#include <iostream>
using namespace std;
bool f()
{
    cout << "f" "\n";
    return true;
}
bool g()
{
    cout << "g" "\n";
    return false;
}
int main()
{

    if (f() || g())
        cout << "hello";
    cin.ignore(1);
}
Run Code Online (Sandbox Code Playgroud)

Mur*_*nik 10

短路评估是语言规范的一部分.你不能把它关掉.您可以改为分配f()g()调用变量,然后评估它们:

bool f_ret = f();
bool g_ret = g();
if (f_ret || g_ret)
    cout << "hello"; 
Run Code Online (Sandbox Code Playgroud)