つまり、どちらの論理演算子が他の論理演算子よりも「優先」または「読み取り」されます。
例えば:
if( x=y || y=y && x=x ){}
javaはこれを次のように読み取っています:(x = y || y = y)、AND(x = x)
またはas:(x = y)または(y = y AND x = x)のいずれか
尋ねられたか、少なくとも見つけやすいもののように聞こえますが、残念ながら、「and」+「or」はGoogleのキーワードです。
つまり、どちらの論理演算子が他の論理演算子よりも「優先」または「読み取り」されます。
例えば:
if( x=y || y=y && x=x ){}
javaはこれを次のように読み取っています:(x = y || y = y)、AND(x = x)
またはas:(x = y)または(y = y AND x = x)のいずれか
尋ねられたか、少なくとも見つけやすいもののように聞こえますが、残念ながら、「and」+「or」はGoogleのキーワードです。
演算子&&
はより優先順位が高い||
ため、&&
最初に評価されます。
http://introcs.cs.princeton.edu/java/11precedence/
それでも、多くのプログラマーはその事実を覚えていません。括弧を使用して、意図する評価の順序を具体的に示す方が、より明確で保守が容易です。
コードに次のように記述していることに注意してください
x=y
これは実際には代入演算子であり、等式演算子ではありません。おそらくあなたは意図している
x==y
x=y || y=y && x=x
=は割り当てであるため、xとyの両方がブール値である場合にのみ機能します。これはy || y && y
、最初の操作のようにx=yを割り当てたためと同等です。