cond && cond op cond
op
&&
または_||
Qn- 短絡 ( &&
) 演算子の場合、最初の条件が false の場合、右側の部分 (全体) は評価されないか、2 番目の条件のみが&&
評価されません
また、次の 2 つの式の結果が異なるのはなぜですか?
(2 > 3 && 5 < 2 || 3 > 2)
=>True
(2 > 3 && 5 < 2 | 3 > 2)
=>False
単一の式で短絡演算子と標準演算子を使用することはできませんか?
cond && cond op cond
op
&&
または_||
Qn- 短絡 ( &&
) 演算子の場合、最初の条件が false の場合、右側の部分 (全体) は評価されないか、2 番目の条件のみが&&
評価されません
また、次の 2 つの式の結果が異なるのはなぜですか?
(2 > 3 && 5 < 2 || 3 > 2)
=>True
(2 > 3 && 5 < 2 | 3 > 2)
=>False
単一の式で短絡演算子と標準演算子を使用することはできませんか?
と の優先順位が異なるため|
、結果は異なります。||
具体的には、|
よりも優先順位が高く&&
、よりも優先||
順位が低くなり&&
ます。
System.out.println(2 > 3 && 5 < 2 || 3 > 2); // true
System.out.println(2 > 3 && 5 < 2 | 3 > 2); // false
System.out.println(2 > 3 && (5 < 2 | 3 > 2)); // false
System.out.println((2 > 3 && 5 < 2) | (3 > 2)); // true
2 番目のケースでは | を使用しているため、結果は異なります。||の代わりに。| | はビット単位の or であり、論理 or とは異なります。
ここで、短絡式と標準式を比較しますが、多くの言語では、論理式が評価されるデフォルト (または唯一の方法) は短絡式です。
「標準」とは、& や | などのビット単位の演算子を意味する場合、それらを論理演算子と組み合わせて一致させることができますが、結果は期待したものとは異なる場合があります。