【发布时间】:2013-10-05 07:01:21
【问题描述】:
我有以下代码:
int SOME_MASK = 0x0000ffff;
int value = /* some value */;
int something = SOME_MASK & value;
// WHY IS "something" guaranteed to be non-negative ?
if (something != NEGATIVE_CONSTANT) {
// do something here....
}
我不断收到FindBugs 分析警告:
正确性 - 非负值与负值的错误比较 常量 此代码比较一个保证为 具有负常数的非负数。
将按位与结果与负常数进行比较的行弹出警告。
我不确定为什么按位与结果保证为非负数?总是这样吗?
【问题讨论】:
-
你是如何声明
SOME_MASK的? -
感谢 FindBugs 如此聪明。我经常看到按位运算符被视为“值变得未知”。
标签: java operators bit-manipulation bitwise-operators