这是一个非常简单的问题,但我无法得到它。我的条件很简单:
bool c = true || true || true && false;
为什么此评估为true
?据我所知,它评估如下:
true || true || true && false
=> true || true && false
=> true && false
=> false
但我猜错了。
答案 0 :(得分:0)
您只需学习一些基本规则:
所以当你说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的真正评估顺序取决于语言/编译器。
如果您想强制执行特定订单,则可以始终使用括号。