我有一个简单的问题来优化我的代码。
bool myfunc();
if (false && true && myfunc())
{
}函数myfunc()会被调用吗?
发布于 2016-03-27 14:12:43
不是的。
&&和||都有短路评估,即一旦结果确定(false表示&&,true表示||)评估停止。而且总是严格地从左到右。
在这种情况下,编译器甚至可以选择完全删除if语句,因为编译时的条件已知为false,因此之后的代码是不可访问的。
发布于 2016-03-27 14:12:56
不,不会调用myfunc(),因为有了第一个false,编译器就会停止。这叫做短路评估。
https://stackoverflow.com/questions/36248285
复制相似问题