运算符“&”不能应用于byte、int、boolean
Operator "&" cannot be applied to byte, int, boolean
关于我之前关于如何比较组合位是否包含特定位的问题,我 运行 遇到了这个错误。
int flag1 = 1 << 0;
int flag4 = 1 << 5;
int combined = flag1 | flag4;
if (combined & flag1 == flag1) // <-- Operator & cannot be applied to int, boolean
如果我将标志转换为字节,错误会将 int
替换为 byte
。
编译器在您的 if
语句中看到二元运算符 &
,将其视为逻辑与(因为它需要一个 returns 和 boolean
的表达式),并检查参数的类型。
它遇到一个 int
个参数 - combined
- 和一个 boolean
个参数 - flag1 == flag1
。由于它需要两个 boolean
参数(&
运算符不能应用于 int
和 boolean
),因此它会出错。
添加括号以便按所需顺序计算运算符:
if ((combined & flag1 ) == flag1)
关于我之前关于如何比较组合位是否包含特定位的问题,我 运行 遇到了这个错误。
int flag1 = 1 << 0;
int flag4 = 1 << 5;
int combined = flag1 | flag4;
if (combined & flag1 == flag1) // <-- Operator & cannot be applied to int, boolean
如果我将标志转换为字节,错误会将 int
替换为 byte
。
编译器在您的 if
语句中看到二元运算符 &
,将其视为逻辑与(因为它需要一个 returns 和 boolean
的表达式),并检查参数的类型。
它遇到一个 int
个参数 - combined
- 和一个 boolean
个参数 - flag1 == flag1
。由于它需要两个 boolean
参数(&
运算符不能应用于 int
和 boolean
),因此它会出错。
添加括号以便按所需顺序计算运算符:
if ((combined & flag1 ) == flag1)