68

すべての論理演算子、シフト演算子、加法演算子、およびすべての乗法演算子に相当する代入演算子があります。

論理演算子が除外されたのはなぜですか? それが難しい理由は技術的な理由ですか?

4

2 に答える 2

53

論理演算子が除外されたのはなぜですか? それが難しい理由は技術的な理由ですか?

彼らはしませんでした。&=または|=または必要に応じて実行でき^=ます。

bool b1 = false;
bool b2 = true;
b1 |= b2; // means b1 = b1 | b2

||and&&演算子には複合形式がありません。率直に言って、少しばかげているからです。どのような状況で言いたいのか

b1 ||= b2;
b1 &&= b2;

左辺が変化しない場合、右辺は評価されませんか? この機能を実際に使用する人はごくわずかのようですが、なぜそれを入れるのでしょうか?

複合演算子の詳細については、こちらの私の真面目な記事を参照してください:
https://docs.microsoft.com/en-us/archive/blogs/ericlippert/compound-assignment-part-one

フォローアップのエイプリルフール記事はこちら:
https://docs.microsoft.com/en-us/archive/blogs/ericlippert/compound-assignment-part-two

于 2011-06-14T15:43:31.427 に答える
2

多分ただ使う

isAdmin = isAdmin || IsGroupAdmin()

実装a ||= bにはa = a || b, またはa = b || a. また、式の右辺が評価されない場合があるため、動作が異なります。

于 2019-08-09T02:16:16.400 に答える