给定C++函数foo:
bool foo();
Run Code Online (Sandbox Code Playgroud)
以及以下代码行
bool some_bool = false;
some_bool = some_bool and foo();
Run Code Online (Sandbox Code Playgroud)
我观察到foo()虽然它可能有副作用,但没有被调用.这种行为的名称是什么,它是否依赖于编译器?
这称为短路评估.
在您的示例中,some_bool为false,因此该语句some_bool && foo()始终为false.所以永远不需要评估foo().
请注意,这是标准的C/C++,并不依赖于编译器,因为它可能导致您发现的未执行的代码.
编写代码的更好方法是:
bool some_bool = false;
bool foo_result = foo();
some_bool = some_bool && foo_result;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |