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

本文解析了Java中位运算符优先级低于恒等运算符的问题,导致的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] 位运算符优先级

您可能感兴趣的与本文相关的镜像

Linly-Talker

Linly-Talker

AI应用

Linly-Talker是一款创新的数字人对话系统,它融合了最新的人工智能技术,包括大型语言模型(LLM)、自动语音识别(ASR)、文本到语音转换(TTS)和语音克隆技术

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值