条件是否使用OR检查所有条件

Hoo*_*och 1 c++ conditional shortest-path conditional-statements

如果有阻止那样的话

if(foo() || foo2() || foo3())
{
 //do some things
}
Run Code Online (Sandbox Code Playgroud)

我只需要一个foo函数来返回true来执行该代码.但我必须打电话给所有人.当第一个foo返回true时问题开始.这样就不会调用其余的foos(foo2和foo3)了.

我知道我可以这样做:

bool foo1 = foo1();
bool foo2 = foo2();
bool foo3 = foo3();

if(foo1 || foo2 || foo3) {}
Run Code Online (Sandbox Code Playgroud)

但我有18个foo函数,这是我的代码的一小部分.有什么技巧可以简单易行吗?

Mar*_*ers 9

||运营商短路.你可以|改用:

if (foo1() | foo2() | foo3()) {}
Run Code Online (Sandbox Code Playgroud)

但是你也应该考虑创建一个函数指针数组并在循环中调用它们.

这是我的代码的一小部分

您应该重构代码,以便可以重用它,而不是在许多地方复制和粘贴相同的代码.

  • -1这是避免使用三个变量的一种非常hacky和混乱的方法. (3认同)