繁体   English   中英

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)

如果已经有关于此的帖子,我很抱歉。 我已经尝试过,但找不到与我的问题类似的任何东西。

与所有逻辑语句构建一样,在这里创建真值表是最容易的。 你最终会得到:

+--+--+--------+
|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为假,并且statement2d都为真,则 function 将不正确(当你应该为假时,你会得到真的结果)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM