use*_*412 5 c c++ short-circuiting
这是一个非常简单的问题:有四个布尔函数:a(),b(),c()和d().我想继续按顺序调用它们,直到第一个返回true.而不是做传统的
if(!a()) {
if(!b()) {
if(!c()) {
d();
}
}
}
Run Code Online (Sandbox Code Playgroud)
要么
if(!a() && !b() && !c()) d();
Run Code Online (Sandbox Code Playgroud)
我想把这个表达写成一个短路的评估.
(a() || b() || c() || d());
Run Code Online (Sandbox Code Playgroud)
但我从未在C/C++代码中看到过这种测试.我错过了这种方法有什么问题吗?
谢谢.
您编写的代码是有效的。d()仅当其他布尔函数返回时才会计算false。
然而,短路评估的可读性较差,并且从维护的角度来看容易出错,因为读者可能无法简单地理解它。
| 归档时间: |
|
| 查看次数: |
238 次 |
| 最近记录: |