可以说,哪个逻辑运算符先于另一个“优先”或“读取”。
例如:
if( x=y || y=y && x=x ){}
java 是否将其读作:以下两者之一:(x=y||y=y), AND (x=x)
或为: (x=y) 或 (y=y AND x=x)
听起来像是会被问到或至少很容易找到的东西,但唉,“和”+“或”是谷歌的关键词。
可以说,哪个逻辑运算符先于另一个“优先”或“读取”。
例如:
if( x=y || y=y && x=x ){}
java 是否将其读作:以下两者之一:(x=y||y=y), AND (x=x)
或为: (x=y) 或 (y=y AND x=x)
听起来像是会被问到或至少很容易找到的东西,但唉,“和”+“或”是谷歌的关键词。
运算符&&
的优先级高于||
,因此&&
将首先评估。
http://introcs.cs.princeton.edu/java/11precedence/
尽管如此,许多程序员不会记得这个事实。使用括号来明确说明预期的评估顺序会更清晰、更易于维护。
请注意,在您编写的代码中
x=y
那实际上是赋值运算符,而不是相等运算符。大概你打算
x==y
x=y || y=y && x=x
只有当 x 和 y 都是布尔值时才可以工作,因为 = 是赋值,它等价于y || y && y
因为你在第一个操作中分配了 x=y