if()语句的工作原理

时间:2016-03-27 14:11:23

标签: c++

我有一个简单的问题来优化我的代码。

bool myfunc();

if (false && true && myfunc())
{
}

是否会调用函数myfunc() ??

3 个答案:

答案 0 :(得分:8)

因为C ++具有short-circuit evaluation条件,所以不会调用该函数,因为第一个false使得整个表达式无论如何都是假的。

如果您更改了顺序,那么首先放置函数调用(即myfunc() && false && true),然后调用该函数。无论false返回什么,表达式的结果仍然是myfunc

答案 1 :(得分:4)

没有

&&||进行短路评估,即一旦结果明确知晓(false &&true || 1}})评估停止。而且它始终是从左到右。

在这种情况下,编译器甚至可能选择完全忽略if语句,因为编译时的条件已知为false,因此之后的代码无法访问。

答案 2 :(得分:1)

不,myfunc()将不会被调用,因为第一个false,编译器将停在那里。这被称为短路评估。