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

时间:2015-12-27 21:11:48

标签: java if-statement bitwise-operators

我只是练习一些基本的Java练习题,下面会出现这个问题。

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

因此b2被赋值为false且1> 2肯定是假的,但我们如何评价" |" ?应该归还吗?

2 个答案:

答案 0 :(得分:2)

b2 = falsefalse分配给变量b2,表达式的值为false。布尔值上的|表示“或”(没有短路),因此它评估两个操作数,如果任一操作数为真,则结果为真。

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

编辑:

||是一个短路运营商。如果您编写(a() || b()),并且a()的计算结果为true,则不会评估b(),因为的结果必须为true。单个|不会短路,因此始终会评估两个操作数。

答案 1 :(得分:1)

(b2 = false)

(在khelwood校正之后编辑)这也是一项任务,而不仅仅是一项逻辑操作,所以要注意副作用。

是的,对于布尔值," |"是"或" (而不是按位),所以如果第一个运算符为真,它将永远为真。