在这种情况下如何评估按位运算符?

How can I evaluate the bitwise operator in this condition?

我只是练习了一些基本的 Java 练习题,如下所示。

if((b2 = false) | (21 % 5)>2) return true;

所以b2赋值为false,1 > 2肯定是false,但是我们如何评估"|" ?它应该 return 正确吗?

(b2 = false)

(经khelwood更正后编辑)这也是一个赋值,不仅仅是逻辑运算,所以要注意副作用。

是的,对于布尔值,“|”是 "or"(而不是按位),因此如果第一个运算符为真,它将始终为真。

b2 = falsefalse 赋值给变量 b2,表达式的值为 false| 在布尔值上表示 "or"(没有短路),因此它计算两个操作数,如果其中一个操作数为真,则结果为真。

不是位运算符。如果对整数使用 |,则它是按位运算符。如果对布尔值使用 |,则它是逻辑运算符。

编辑:

||是短路运算符。如果您写 (a() || b()),并且 a() 的计算结果为真,那么 b() 将不会被计算,因为 的结果必须为真。单个 | 不会短路,因此始终评估两个操作数。