else if 怎么写成逻辑语句?
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)
如果已经有关于此的 post,我很抱歉。我试过了,但找不到与我的问题类似的问题。
与所有逻辑语句构建一样,在此处创建事实是最容易的 table。你最终会得到:
+--+--+--------+
|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
都为真, 将无法正常运行(当你应该有 false).
我想写一个 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)
如果已经有关于此的 post,我很抱歉。我试过了,但找不到与我的问题类似的问题。
与所有逻辑语句构建一样,在此处创建事实是最容易的 table。你最终会得到:
+--+--+--------+
|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
都为真,将无法正常运行(当你应该有 false).