在 bool 函数中返回 true 或其他内容
Posted
技术标签:
【中文标题】在 bool 函数中返回 true 或其他内容【英文标题】:Returning true or something in bool function 【发布时间】:2012-10-21 17:16:32 【问题描述】:我想知道,例如,我是否有这个功能:
bool f(...)
//something here
return true or f(...);
我知道它确实返回了true
,但它是在不评估语句的其他部分的情况下返回它还是再次评估函数?
【问题讨论】:
你所说的代码的其他部分是什么意思?你在这里提到的那部分 //something here? 【参考方案1】:这不会计算函数,因为我们已经知道其中一个操作数是 or'd 为真。同样的事情发生在:
bool f(...)
return false and f(...)
这叫Short circuit evaluation.
【讨论】:
【参考方案2】:否它不会评估 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语句上面同一个函数中的其他部分代码,是的,
即使底部的返回语句为真,它也会被执行。
如果你的意思是递归部分,那么它不会被执行,因为在该语句中的调用之前有true。如果它是return false||func()
,那么这里才会有递归。
【讨论】:
感谢代码,我的问题的答案将对我遇到的其他问题有很大帮助。 更新了!答案。我仍然不确定您所说的其他部分是什么意思!【参考方案3】:它在不评估函数的情况下返回 true。由于 or 语句中的第一次真正遇到保证 rest 是正确的,所以进一步评估是没有用的。
【讨论】:
【参考方案4】:在这种情况下,它不会再次调用 f,因为它已经知道结果。查找“惰性求值”或“短路求值”
【讨论】:
以上是关于在 bool 函数中返回 true 或其他内容的主要内容,如果未能解决你的问题,请参考以下文章