C#逻辑运算问题

Rod*_*lfo 8 c# evaluation operator-keyword

为什么这是真的:

(true | false & false)
Run Code Online (Sandbox Code Playgroud)

这是假的:

(true | false && false)
Run Code Online (Sandbox Code Playgroud)

在我看来应该是对方..

Jon*_*eet 15

它们绑定为:

true | (false & false)  // true
Run Code Online (Sandbox Code Playgroud)

(true | false) && false  // false
Run Code Online (Sandbox Code Playgroud)

我会避免编写依赖于这些规则的代码 - 这显然不清楚读者:)

作为参考,请参阅C#4语言规范的第7.3.1节,该规范显示&优先级高于|(因此第一个结果)并且|优先级高于&&(因此第二个结果).

  • 另外:我的经验法则:**永远不会学习优先表**; 改用括号.保存你的大脑以寻找重要的事情. (8认同)