为什么会这样:
(true | false & false)
这是假的:
(true | false && false)
在我看来,应该是对方..
答案 0 :(得分:15)
他们绑定为:
true | (false & false) // true
和
(true | false) && false // false
我会避免编写依赖这些规则的代码 - 读者显然不清楚这一点:)
供参考,请参阅C#4语言规范的第7.3.1节,其中&
的优先级高于|
(因此第一个结果),|
优先级高于&&
{{1}}(因此第二个结果)。
答案 1 :(得分:3)
这是因为运算符优先级here
答案 2 :(得分:3)
&
优先|
优先&&
,因此您的表达式评估为
(true | (false & false)) = (true | false) = true
和
((true | false) && false) = (true && false) = false
有关详细信息,请参阅包含优先顺序的the reference of C# operators。