C#逻辑运算题

发布于 2024-10-17 08:07:01 字数 161 浏览 7 评论 0原文

为什么这是真的:

(true | false & false)

这是假的:

(true | false && false)

在我看来应该是相反的..

why this is true:

(true | false & false)

and this is false:

(true | false && false)

in my mind should be the oposite..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

醉南桥 2024-10-24 08:07:01

它们绑定为:

true | (false & false)  // true

并且

(true | false) && false  // false

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

有关参考,请参阅 C# 4 语言规范的第 7.3.1 节,其中显示了 & 的优先级高于 | (因此是第一个结果),并且 | 的优先级高于 && (因此是第二个结果)。

They bind as:

true | (false & false)  // true

and

(true | false) && false  // false

I would avoid writing code which relies on these rules though - it's obviously unclear to the reader :)

For reference, see section 7.3.1 of the C# 4 language specification, which shows & having higher precedence than | (hence the first result) and | having higher precedence than && (hence the second result).

滥情稳全场 2024-10-24 08:07:01

这是因为此处的运算符优先级

This is because of operator precedence here

笑梦风尘 2024-10-24 08:07:01

& 优先于 | ,而 | 优先于 && ,因此您的表达式将被计算为

(true | (false & false)) = (true | false) = true

((true | false) && false) = (true && false) = false

参见 C# 运算符的参考 包含优先级以获取更多信息。

& has priority to | which has priority to &&, so your expressions are evaluated as

(true | (false & false)) = (true | false) = true

and

((true | false) && false) = (true && false) = false

See the reference of C# operators containing there precedence for more information.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文