【发布时间】:2020-07-19 17:50:57
【问题描述】:
我很好奇三元运算符是否存在为每个条件组合提供相同结果的逻辑表示。我在下面尝试过,但并未涵盖所有情况。这个问题有正确的表示吗?
Ternary Condition : a ? b : c
Logical Version : (a && b) || c
当给出以下条件时,与三元结果相比,逻辑版本在一个条件下失败:
(true && true) || true = true
(true && true) || false = true
(true && false) || true = true //must be false
(true && false) || false = false
(false && true) || true = true
(false && true) || false = false
(false && false) || true = true
(false && false) || false = false
【问题讨论】:
-
为什么一定是假的?
(true && false) || true是(false) || true=true -
因为我们希望它给出相同的三元条件结果,即 'true ?假:真=假'
-
哦,我现在明白了 :)
-
三元运算符就像一个短的
if。b和c不必是布尔值。b是表达式a返回true和c如果a返回 false 的返回值。所以逻辑版本没有意义。请提供有关您希望使用此逻辑实现什么的更多信息。 -
(a & b) | (!a & c)是直接翻译,我认为没有比这更简单的了。
标签: c# logical-operators conditional-operator