我想寫一個 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)
如果已經有關于此的帖子,我很抱歉。我試過了,但找不到與我的問題類似的東西。
uj5u.com熱心網友回復:
與所有邏輯陳述句構建一樣,在此處創建真值表將是最容易的。你最終會得到:
-- -- --------
|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為真(你會得到真正的結果時,你應該有假)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/371051.html
上一篇:如何創造回報x?
