在这种情况下如何评估按位运算符?
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 = false
将 false
赋值给变量 b2
,表达式的值为 false
。 |
在布尔值上表示 "or"(没有短路),因此它计算两个操作数,如果其中一个操作数为真,则结果为真。
它不是位运算符。如果对整数使用 |
,则它是按位运算符。如果对布尔值使用 |
,则它是逻辑运算符。
编辑:
||
是短路运算符。如果您写 (a() || b())
,并且 a()
的计算结果为真,那么 b()
将不会被计算,因为 或 的结果必须为真。单个 |
不会短路,因此始终评估两个操作数。
我只是练习了一些基本的 Java 练习题,如下所示。
if((b2 = false) | (21 % 5)>2) return true;
所以b2赋值为false,1 > 2肯定是false,但是我们如何评估"|" ?它应该 return 正确吗?
(b2 = false)
(经khelwood更正后编辑)这也是一个赋值,不仅仅是逻辑运算,所以要注意副作用。
是的,对于布尔值,“|”是 "or"(而不是按位),因此如果第一个运算符为真,它将始终为真。
b2 = false
将 false
赋值给变量 b2
,表达式的值为 false
。 |
在布尔值上表示 "or"(没有短路),因此它计算两个操作数,如果其中一个操作数为真,则结果为真。
它不是位运算符。如果对整数使用 |
,则它是按位运算符。如果对布尔值使用 |
,则它是逻辑运算符。
编辑:
||
是短路运算符。如果您写 (a() || b())
,并且 a()
的计算结果为真,那么 b()
将不会被计算,因为 或 的结果必须为真。单个 |
不会短路,因此始终评估两个操作数。