在 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 或其他内容的主要内容,如果未能解决你的问题,请参考以下文章

条件循环和其他语句学习1

《python基础教程》第5章 条件循环和其他语句 读书笔记

[其他]一些笔记(较乱未整理)

True or False

python bool

Python bool() 函数