我只是练习一些基本的Java练习题,下面会出现这个问题。
if((b2 = false) | (21 % 5)>2) return true;
因此b2被赋值为false且1> 2肯定是假的,但我们如何评价" |" ?应该归还吗?
答案 0 :(得分:2)
b2 = false
将false
分配给变量b2
,表达式的值为false
。布尔值上的|
表示“或”(没有短路),因此它评估两个操作数,如果任一操作数为真,则结果为真。
不是按位运算符。如果对整数使用|
,则它是一个按位运算符。如果你对布尔值使用|
,那么它就是一个逻辑运算符。
编辑:
||
是一个短路运营商。如果您编写(a() || b())
,并且a()
的计算结果为true,则不会评估b()
,因为或的结果必须为true。单个|
不会短路,因此始终会评估两个操作数。
答案 1 :(得分:1)
(b2 = false)
(在khelwood校正之后编辑)这也是一项任务,而不仅仅是一项逻辑操作,所以要注意副作用。
是的,对于布尔值," |"是"或" (而不是按位),所以如果第一个运算符为真,它将永远为真。