use*_*491 2 c c++ optimization return conditional-statements
我想知道这两个解决方案中的一个是否优于另一个:
版本1:
bool myFunction()
{
if (A)
return false;
if (B)
return false;
if (C)
return false;
if (D)
return false;
return true;
}
Run Code Online (Sandbox Code Playgroud)
版本2:
bool myFunction()
{
return (!A && !B && !C && !D);
}
Run Code Online (Sandbox Code Playgroud)
我猜测版本2可能效率稍低,因为我们可能需要计算整个布尔表达式以了解它是真还是假.在第一个版本中,如果A为false,则返回false,而不计算B,C或D.但我发现第二个版本更具可读性.
那么最好的方法是什么?
谢谢.
在第一个版本中,如果A为假,则返回false,而不计算B,C或D.
对于第二个版本也是如此.该&&运营商短路 -如果第一个操作false,也不会计算第二个操作数.
但是,我要么从第二个版本中删除括号:
return !A && !B && !C && !D;
Run Code Online (Sandbox Code Playgroud)
或将其反转为:
return !(A || B || C || D);
Run Code Online (Sandbox Code Playgroud)
...取决于你发现哪个更容易阅读.我个人更喜欢尽可能少的否定.(||也是短路,所以它们的效率相当.)
请注意,原则上不要避免使用多个return语句 - 有很多时候使用多个return语句会提供更易读的代码.瞄准最可读的代码,只有当您已经证明最易读的方法不能满足您的需求时,才会担心效率问题.在这种情况下,这些方法同样有效,因此无论如何也不是问题.
| 归档时间: |
|
| 查看次数: |
124 次 |
| 最近记录: |