具有相同回报的多个IF

use*_*794 6 c++ if-statement

我见过一些看起来像这样的代码:

if (a) return false;
if (b) return false;
if (c) return false;
return true;
Run Code Online (Sandbox Code Playgroud)

上面和之间的表现有什么不同

if (a || b || c) return false;
else return true;
Run Code Online (Sandbox Code Playgroud)

一般来说,处理这个问题的首选案例是什么?也许在我的第二个例子中没有别的?

编辑:似乎很多人误导我返回真或假并建议返回!(a || b || c).这不是我想问的问题.想象一下,如果不是返回true或false,我想返回"Yes"或"No",或23423或3.

tob*_*ies 5

任何一个的唯一优点是可读性,优化编译器为这两种情况生成几乎相同的代码是合理的.

如果3次测试很短,则return !(a||b||c);完全合理

但是,如果它们是长函数调用,那么您的第一个示例将更容易阅读.


RAY*_*RAY 4

这一切都取决于编译器如何编译代码。出于所有实际目的,它们是相同的。(只要确保使用短路或“||”)