
C言語入門|C言語の代入演算子を理解する:基本の = と複合代入のしくみ
プログラムを書いていると、必ずと言っていいほど登場するのが
= や += といった記号です。
「= は代入だって知ってるよ!」
「+= も見たことあるけど、なんとなく使ってる…」
そんな状態のまま進んでしまう人も多いのですが、
代入演算子は、C言語の式を理解するうえでの超重要ポイントです。
なぜなら、C言語では
- 計算の結果がどうやって変数に入るのか
- 式がどの順番で評価されるのか
を考えるとき、必ず代入演算子が関わってくるからです。
ここでは、
「= は何をしているのか」
「+= はどんな仕組みなのか」
を、図をイメージしながらやさしく整理していきましょう😊

代入演算子とは何をするものか
代入演算子とは、右側(右オペランド)の内容を、左側(左オペランド)の変数に代入する演算子です。
いちばん基本的なのが、次の形です。
変数 = 値;たとえば、
a = 10;という文は、
- 右側の 10 を取り出し。
- 左側の変数 a に入れる。
という処理を意味します。
ここで大切なのは、
= は「等しい」という意味ではない
という点です。
数学の世界では「a = 10」は関係式に見えますが、
C言語では「a に 10 を入れなさい」という命令です。
代入は式の最後に行われる
代入演算子には、もうひとつ重要な特徴があります。
それは、
優先順位が最も低い
ということです。
つまり、1つの式の中にいろいろな演算子があった場合でも、
代入は基本的に最後に行われる
と覚えておくと安心です。
たとえば、次の式を見てみましょう。
a = 3 + 4 * 2;この式では、
- まず 4 * 2 が計算される。
- 次に 3 + 8 が計算される。
- 最後に、その結果 11 が a に代入される。
という順番で処理されます。
「計算 → 代入」
この流れは、代入演算子を理解するうえでの基本イメージです。
複合代入演算子という便利な仲間たち
C言語には、代入と計算をまとめて書ける
複合代入演算子
が用意されています。
代表的なものを整理すると、次のようになります。
| 演算子 | 機能 | 評価の方向 | 意味 |
|---|---|---|---|
| = | 右辺を左辺に代入 | 右→左 | a = 10 |
| += | 加算して代入 | 右→左 | a = a + 2 |
| -= | 減算して代入 | 右→左 | a = a - 2 |
| *= | 乗算して代入 | 右→左 | a = a * 2 |
| /= | 除算して代入 | 右→左 | a = a / 2 |
| %= | 剰余して代入 | 右→左 | a = a % 2 |
どの演算子も、
- 優先順位は最低
- 評価の方向は右から左
という共通点があります。
a += 3 は何をしているのか
では、よく見かけるこの書き方を見てみましょう。
a += 3;これは、次の書き方と完全に同じ意味です。
a = a + 3;たとえば、a に 2 が入っているとすると、
a = a + 3は、次のように評価されます。
- 右辺の a + 3 を評価する。
- a の中身(2)を取り出す。
- 2 + 3 を計算して 5 になる。
- a に 5 を代入する。
結果として、a の値は 5 になります。
この流れを図で表すと、
a = a + 3
↓
a = 2 + 3
↓
a = 5というイメージです。
数式として見ると違和感がありますが、
プログラムの評価手順として考えると、とても素直な動きだとわかります😊
評価の方向は「右から左」
代入演算子は、右から左へ評価されるという特徴も持っています。
そのため、次のような書き方も可能です。
a = b = 10;この場合、
- まず b = 10 が評価される。
- b に 10 が代入され、その結果の値は 10
- 次に a = 10 が評価される。
結果として、a と b の両方に 10 が入ります。
少しトリッキーに見えますが、
「代入は右から左」
と覚えておけば、落ち着いて理解できます。
代入演算子を理解するコツ
代入演算子で混乱しやすい原因は、
「数学の感覚で見てしまうこと」
にあります。
おすすめなのは、次の考え方です。
- = は「計算結果を箱に入れる命令」
- まず右側を全部計算する。
- 最後に左側に代入する。
- += などは必ず普通の形に書き直して考える。
このクセをつけておくと、
後で出てくる複雑な式も怖くなくなりますよ😊
