返回未执行bool值的c++函数

C++ function returning bool not executed

本文关键字:c++ 函数 值的 bool 执行 返回      更新时间:2023-10-16

给定一个c++函数foo:

bool foo();

和下面的代码行

bool some_bool = false;
some_bool = some_bool and foo();

我观察到foo()没有被调用,尽管它可能有副作用。这种行为的名称是什么,它是否依赖于编译器?

这叫做短路求值。

在您的示例中,some_bool为假,因此语句some_bool && foo()总是为假。因此,不需要计算foo()

请注意,这是标准的C/c++,并且不依赖于编译器,因为它可能导致未执行的代码,正如您所发现的。

更好的写法是:

bool some_bool = false;
bool foo_result = foo();
some_bool = some_bool && foo_result;

如果some_bool已经是false,那么foo()将不会被调用(优化),因为无论foo()返回什么,最终结果总是false。