如果我有以下 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/