返回true或bool函数中的某些内容

时间:2012-11-01 05:49:35

标签: c++ function boolean return

我想知道,例如,我是否有这个功能:

bool f(...) {
  //something here
  return true or f(...);
}

我知道它确实返回true但它是否在不评估语句的其他部分的情况下返回它,或者它是否再次评估该函数?

4 个答案:

答案 0 :(得分:4)

这不会评估函数,因为我们已经知道其中一个操作数是真的。同样的事情发生在:

bool f(...) {
    return false and f(...)
}

这称为Short circuit evaluation.

答案 1 :(得分:3)

否它不会评估func()调用。

LOGICAL OR评估“从左到右”并在表达式返回true时停止

你可以检查它。你测试了吗?

用以下程序测试:

#include <iostream>
using namespace std;
bool func();
bool func2();
int main()
{
func();
}

bool func2()
{
cout <<"called me"<<endl;
return true;
}
bool func()
{
return (true ||func2());
}

它只是执行不会向控制台打印任何东西。

如果你的意思是在return语句上面的同一个函数中的代码的其他部分,是的, 即使返回标记在底部为真,它也会被执行。 如果你的意思是递归部分,那么不会执行它,因为在该语句中调用之前是真的。如果它是return false||func(),那么这里只会有递归。

答案 2 :(得分:1)

在这种情况下,它不会再次调用f,因为它已经知道结果。查找“懒惰评估”或“短路评估”

答案 3 :(得分:1)

在不评估函数的情况下返回true。由于第一次真实遭遇或陈述保证休息是真的,因此进一步评估是无用的。