003-004-009
複合代入演算子で値を更新
中級
問題説明
複合代入演算子:簡潔な値の更新
複合代入演算子は、演算と代入を1つの記号で行います。これはクリーンで保守しやすいコードを書くために不可欠であり、ループ、アキュムレータ、状態更新で広く使用されます。
一緒に複合代入演算子を学んでいきましょう!
学習目標
- 複合代入演算子(+=, -=, *=, /=)の動作を説明できる
- 通常の代入と複合代入演算子の違いを比較できる
- 複合代入演算子を使った値の更新パターンを識別できる
学習ポイント
- 算術複合:
+=、-=、*=、/=、%= - ビット演算複合:
&=、|=、^=、>>=、<<= - 暗黙のキャスト: 複合演算子は自動的に型変換を含む
- 単一評価: 左辺は一度だけ評価される
主な複合代入演算子
| 演算子 | 例 | 等価な式 |
|---|---|---|
+= | a += 5 | a = a + 5 |
-= | a -= 3 | a = a - 3 |
*= | a *= 2 | a = a * 2 |
/= | a /= 4 | a = a / 4 |
%= | a %= 3 | a = a % 3 |
よくある間違い
間違えても大丈夫です。もう一度コードを確認してみてください。
間違い1: 比較演算子との混同
誤ったコード:
if (x += 5) { // 代入であり、比較ではない!
// 常にtrue(xが0以外になる)
}正しいコード:
x += 5;
if (x == 10) { // 比較には == を使用
// ...
}間違い2: 型キャストの予期しない動作
動作:
byte b = 10;
b += 5; // OK: byteへの暗黙のキャスト
b = b + 5; // エラー: 結果はint、明示的キャストが必要説明: 複合演算子は暗黙の縮小キャストを含み、通常の演算子は含みません。
間違い3: 除算の切り捨て
例:
int value = 10;
value /= 4; // 結果は2(整数除算)、2.5ではない実践的な活用
- アキュムレータ: ループ内で
sum += item - カウンタ:
count++またはcount += 1 - 文字列構築:
str += " text"(ループではStringBuilderを推奨) - ビットフラグ:
flags |= OPTIONで設定、flags &= ~OPTIONでクリア
補足: ループ内で配列要素を変更する場合、arr[i] = arr[i] + valueよりもarr[i] += valueの方がクリーンです。
前提知識の詳細説明
この問題を解くために必要な知識を確認しましょう。
基本概念
この問題で扱うプログラミングの基本概念を理解することが、正しい解答への第一歩です。コードの各要素がどのように連携して動作するかを把握しましょう。
実装アプローチ
問題を解くための考え方を段階的に整理します:
- 問題文を読み、入力と出力の関係を理解する
- 必要な変数やデータ構造を特定する
- 処理の流れを組み立てる
- テストケースで動作を確認する
