错误解决 | java报错 “error: bad operand types for binary operator” & 位运算符优先级

int restmp = 0;
int mask = 1;
while(restmp & mask == 0)//错误

报错:bad operand types for binary operator ‘&’
原因:其实是运算符的优先级问题,对位运算符来说,恒等运算符优先级比位运算符更大,这样写相等于 restmp & (mask == 0),&左边为int型,&右边为boolean型,所以出错。
解决:在前面加括号就行了,让等式变为先&位运算,后恒等判断:(restmp & mask)== 0

while((restmp & mask) == 0)//✔

扩展:位运算符优先级

优先级(从高到低排列)描述运算符
1括号()、[]
2正负号+、-
3自增、自减++、-- 、!
4乘除、取余*、/、%
5加减+、-
6移位运算<<、>>、>>>
7大小关系>、>=、<、<=
8相等关系==
9按位与&
10按位异或^
11按位或I
12逻辑与&&
13逻辑或II
14条件运算?:
15赋值运算=、+=、-=、*=、/=、%=
16位赋值运算&=、I=、<<=、>>=、>>>=

注意:虽然赋值运算“=”优先级低,但是判断相等关系的恒等运算符“==”优先级高。

参考:
[1] 踩坑记录 关于java中的“error: bad operand types for binary operator ”
[2] 位运算符优先级

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值