多个OR和AND如何评估

时间:2017-09-06 13:22:04

标签: if-statement boolean conditional

这是一个非常简单的问题,但我无法得到它。我的条件很简单:

bool c = true || true || true && false;

为什么此评估为true?据我所知,它评估如下:

true || true || true && false => true || true && false => true && false => false

但我猜错了。

2 个答案:

答案 0 :(得分:0)

您只需学习一些基本规则:

    如果a或b中至少有一个为真,则
  1. (a OR b)为真。
  2. 如果a和b均为真,则
  3. (a AND b)为真。
  4. 运营商的订单事项:您不能以任何方式执行您想要的逻辑。计算机按订单计算逻辑语句的输出。简化的顺序是这样的:首先是分组(),第二个是,第三个是 OR
  5. 所以当你说bool c = true || true || true && false;时。计算机说好了让我们先计算true && false。这是假的!然后计算true || true || false,这是真的。

    修改

    注1 :逻辑运算符的完整列表及其优先级在很大程度上取决于语言。你可以参考文档。 for C#

    注释2 :最佳做法是使用GROUPING作为括号,因为GROUPING始终为优先级。例如,最好说: bool c = (true || true) || (true && false);

答案 1 :(得分:-1)

想想OR ||喜欢加法和AND&&作为乘法。事实上,有一个优先事项,你有时会看到它们是这样写的:

bool c = true + true + true + true * false

在这种情况下,第一次评估是true * false,然后是其余的OR。在这种特殊情况下,OR的真正评估顺序取决于语言/编译器。

如果您想强制执行特定订单,则可以始终使用括号。