[英]C# logical operation question
为什么这是真的:
(true | false & false)
这是假的:
(true | false && false)
在我看来应该是对方..
它们绑定为:
true | (false & false) // true
和
(true | false) && false // false
我会避免编写依赖于这些规则的代码 - 这显然不清楚读者:)
供参考,请参阅C#4语言规范的第7.3.1节,该规范显示&
优先级高于|
(因此第一个结果)和|
优先级高于&&
(因此第二个结果)。
这是因为这里的运算符优先级
&
优先|
优先于&&
,所以你的表达式被评估为
(true | (false & false)) = (true | false) = true
和
((true | false) && false) = (true && false) = false
有关更多信息,请参阅包含优先级的C#运算符的引用 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.