[英]How to write else if as logical statement?
我想寫一個 if-else 語句作為邏輯語句。 我知道:
if (statement1){
b=c
}
else{
b=d
}
可以寫成:
b=(statement1 && c)||(!statement1 && d)
但是如何將以下 if-else 語句編寫為合乎邏輯的?:
if (statement1){
b=c
}
else if (statement2){
b=d
}
else{
b=e
}
我想到了類似的東西:
b=(statement1 && c)||(statement2 && d)||((!statement1&&!statement2) && e)
如果已經有關於此的帖子,我很抱歉。 我已經嘗試過,但找不到與我的問題類似的任何東西。
與所有邏輯語句構建一樣,在這里創建真值表是最容易的。 你最終會得到:
+--+--+--------+
|s2|s1| result |
+--+--+--------+
| 0| 0| e |
+--+--+--------+
| 0| 1| c |
+--+--+--------+
| 1| 0| d |
+--+--+--------+
| 1| 1| c |
+--+--+--------+
如此簡單,那將是
(!s1 & !s2 & e) || (!s2 & s1 & c) || (s2 & !s1 & d) || (s1 & s2 & c)
這可以通過組合兩個c
結果並刪除s2
來簡化:
(!s1 & !s2 & e) || (s2 & !s1 & d) || (s1 & c)
(請注意,這在 C++ 中會更快,並將if
語句與s1 & c
作為第一項更接近。如果評估這些值中的任何一個會導致外部影響,這將特別重要)
請注意,您構建的內容,
(statement1 && c)||(statement2 && d)||((!statement1&&!statement2) && e)
如果statement1
為真, c
為假,並且statement2
和d
都為真,則 function 將不正確(當你應該為假時,你會得到真的結果)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.