0

我以为我理解使用短路运算符优先顺序很重要但是我很难理解为什么会出现以下代码:

line 3. false && true || true   // this returns true
line 4. false && true |  true  //  this returns false

我说第 4 行的代码将返回 false 是正确的,因为评估是从右到左的。但是,如果第 3 行具有从左到右的评估,为什么它返回一个 true?只使用两个短路运算符很好,但使用三个,我有点卡在逻辑上。没有双关语的意思。

4

1 回答 1

4

记住Java 中的运算符优先级。|在 之前进行评估&&,但||在 之后进行评估&&。因此,第一个将评估为(false && true) || true等于true,而第二个将评估为false && (true | true),其评估为假。

于 2021-05-27T19:30:47.060 回答