5

可以说,哪个逻辑运算符先于另一个“优先”或“读取”。

例如:

if( x=y || y=y && x=x ){}

java 是否将其读作:以下两者之一:(x=y||y=y), AND (x=x)

或为: (x=y) 或 (y=y AND x=x)


听起来像是会被问到或至少很容易找到的东西,但唉,“和”+“或”是谷歌的关键词。

4

2 回答 2

10

运算符&&的优先级高于||,因此&&将首先评估。

http://introcs.cs.princeton.edu/java/11precedence/

尽管如此,许多程序员不会记得这个事实。使用括号来明确说明预期的评估顺序会更清晰、更易于维护。

请注意,在您编写的代码中

x=y

那实际上是赋值运算符,而不是相等运算符。大概你打算

x==y
于 2013-03-26T03:07:12.350 回答
1

x=y || y=y && x=x 只有当 x 和 y 都是布尔值时才可以工作,因为 = 是赋值,它等价于y || y && y因为你在第一个操作中分配了 x=y

于 2013-03-26T03:17:54.683 回答