c# - 使用按位和时,运算符 & 不能应用于 int 和 bool 类型的操作数

标签 c#

如果我有以下 C# 代码:

int i = 1;
bool b = true;

if (i & 1 == 1 && b)
    ...

我得到一个错误:

operator & cannot be applied to operands of type int and bool

我能做到:

if (i & 1 == 1)

if (b)

我试过将它们放在括号中:

if ((i & 1 == 1) && b)
if (i & 1 == 1 && (b))
if ((i & 1 == 1) && (b))

但这并没有什么不同。

我在这里错过了什么?

我知道我可以将它们放在单独的 ifs 中,但我想了解这里发生了什么。是错误吗?

我使用的是 VS 2015。目标框架是 4.6.2。

最佳答案

优先规则; == 高于&&&;所以在左边的表达式中 (i & 1 == 1) 你实际上是指:(i & 1) == 1。则组合表达式为:

if ((i & 1) == 1 && b)

实际上,你说这行得通很奇怪:

if (i & 1 == 1)

因为我收到 CS0019“运算符‘&’不能应用于‘int’和‘bool’类型的操作数”!

关于c# - 使用按位和时,运算符 & 不能应用于 int 和 bool 类型的操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52944268/

相关文章:

c# - DataGridVIew填充了匿名类型,如何过滤?

c# - 为 asmx WebService 抛出 405 的自定义错误处理程序

c# - 是否可以重载 ShowDialog() 以便子窗体将信息作为输出参数返回?

c# - 从不同网站调用时保留 session

c# - 破解 MS Access 文件有多容易?如何保护它?

c# - 如何在 C# 中水平交叉 DataGridView 中的一行?

c# - XUnit CollectionFixture 实例化多次

c# - 比较 MbUnit 3.1 中的 2 个列表

c# - 创建一个 C# 工厂

c# - WebBrowser.Document.Body 始终为空