這是一個非常微不足道的問題: 有四個布爾函數:a(),b(),c()和d()。我想繼續打電話給他們,直到第一個返回true
。而不是做傳統用短路操作替換鏈接的ifs
if(!a()) {
if(!b()) {
if(!c()) {
d();
}
}
}
或
if(!a() && !b() && !c()) d();
我想過寫表達式作爲短路評價。
(a() || b() || c() || d());
但我從來沒有見過這樣的測試在C/C++代碼中以這種方式完成。這種方法有什麼問題,我錯過了?
謝謝。
我可以看到*五*布爾函數。 – 2013-03-21 21:24:45
@chris或不改變含義:只有在所有其他函數都是false的情況下才執行d()。 – Loghorn 2013-03-21 21:26:38
我從維護角度反對這個建議。當人們看到短路版本時(如果這是你的擔憂),它可能不會立即顯現出來。事實上,你必須詢問SO的行爲應該暗示當其他人閱讀你的代碼時會發生什麼。 – Michael 2013-03-21 21:28:03