Findbugs警告:整数移位32-是什么意思?

Findbugs警告:整数移位32-是什么意思?,第1张

Findbugs警告:整数移位32-是什么意思?

根据Java语言规范:

如果左侧 *** 作数的提升类型为int,则仅将右侧 *** 作数的最低5位用作移位距离。就像右侧 *** 作数受到掩码值0x1f的按位逻辑AND运算符&(§15.22.1)一样。因此,实际使用的移动距离始终在0到31(含)范围内。

因此,如果b是一个int,则表达式等于

long a = b | c;

我非常怀疑这是什么目的。应该是

long a = ((long) b << 32) | c;

(如果b已经很长,则代码是正确的,并且FindBugs将该错误误认为是错误)。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5499570.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存