Mad*_*nyo 6 java bit-shift bit
根据我之前关于如何比较组合位是否包含特定位的问题,我遇到了这个错误.
int flag1 = 1 << 0;
int flag4 = 1 << 5;
int combined = flag1 | flag4;
if (combined & flag1 == flag1) // <-- Operator & cannot be applied to int, boolean
Run Code Online (Sandbox Code Playgroud)
如果我将标志转换为字节,则错误替换int为byte.
Era*_*ran 13
编译器&在if语句中看到二元运算符,将其视为逻辑AND(因为它需要一个返回a的表达式boolean),并检查参数的类型.
它遇到一个int论点 - combined和一个boolean论点 - flag1 == flag1.由于它需要两个boolean参数(&运算符不能应用于a int和a boolean),因此会出错.
添加括号以便按所需顺序评估运算符:
if ((combined & flag1 ) == flag1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3598 次 |
| 最近记录: |