重複の可能性があるもの:
Java には、条件 AND 演算子と条件 OR 演算子の複合代入バージョンがないのはなぜですか? (&&=、||=)
「&&=」演算子が存在しないのはなぜですか?
今日、仕事中に次の LOC を書きました (b と b1 の正体は秘密です :)
b &&= b1; // meaning b = b && b1;
数秒間見つめて、そのような演算子は存在しないことに気付きました。念のため、コンパイルをクリックしましたが失敗しました。念のため、標準を調べました。
そのような演算子が存在しない具体的な理由はありますか? いくつか考えられます:
b &&= b1
b = b && b1
&& の短絡評価のため、これらは同等ではない可能性があります。- &&=は醜い
- &&=はほとんど必要ありません
いいえ、私はそのような演算子があると非常に便利だと主張しているわけではありません。また、上記の 3 つの理由のいずれかまたはすべてが、その演算子の作成を控えるのに十分ではないと主張しているわけではありません。私の質問は次のとおりです。私が見落としている、もっと深刻な理由があるのでしょうか?
ベストアンサー1
質問と回答の両方で、対応する論理演算子の短絡動作が潜在的な問題として言及されている理由がわかりません。
&&=
および演算子の定義には、短絡に関連する問題はまったくありません。これらは、および他の同様の演算子||=
と一様に定義される必要があります。つまり、は と同等ですが、バージョンでは が 1 回だけ評価されます。つまり、 が元々ゼロである場合、 はまったく評価されないということです。簡単です。+=
a &&= b
a = a && b
a
&&=
b
a
したがって、それらが言語に存在しない唯一の理由は、まあ、「ただそうであるから」です。