C言語入門|C言語の代入演算子を理解する:基本の = と複合代入のしくみ

プログラムを書いていると、必ずと言っていいほど登場するのが
= や += といった記号です。

「= は代入だって知ってるよ!」
「+= も見たことあるけど、なんとなく使ってる…」

そんな状態のまま進んでしまう人も多いのですが、
代入演算子は、C言語の式を理解するうえでの超重要ポイントです。

なぜなら、C言語では

  • 計算の結果がどうやって変数に入るのか
  • 式がどの順番で評価されるのか
    を考えるとき、必ず代入演算子が関わってくるからです。

ここでは、
「= は何をしているのか」
「+= はどんな仕組みなのか」
を、図をイメージしながらやさしく整理していきましょう😊

代入演算子とは何をするものか

代入演算子とは、右側(右オペランド)の内容を、左側(左オペランド)の変数に代入する演算子です。

いちばん基本的なのが、次の形です。

変数 = 値;

たとえば、

a = 10;

という文は、

  • 右側の 10 を取り出し。
  • 左側の変数 a に入れる。

という処理を意味します。

ここで大切なのは、
= は「等しい」という意味ではない
という点です。

数学の世界では「a = 10」は関係式に見えますが、
C言語では「a に 10 を入れなさい」という命令です。

代入は式の最後に行われる

代入演算子には、もうひとつ重要な特徴があります。

それは、
優先順位が最も低い
ということです。

つまり、1つの式の中にいろいろな演算子があった場合でも、
代入は基本的に最後に行われる
と覚えておくと安心です。

たとえば、次の式を見てみましょう。

a = 3 + 4 * 2;

この式では、

  1. まず 4 * 2 が計算される。
  2. 次に 3 + 8 が計算される。
  3. 最後に、その結果 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

は、次のように評価されます。

  1. 右辺の a + 3 を評価する。
  2. a の中身(2)を取り出す。
  3. 2 + 3 を計算して 5 になる。
  4. a に 5 を代入する。

結果として、a の値は 5 になります。

この流れを図で表すと、

a = a + 3
   ↓
a = 2 + 3
   ↓
a = 5

というイメージです。

数式として見ると違和感がありますが、
プログラムの評価手順として考えると、とても素直な動きだとわかります😊

評価の方向は「右から左」

代入演算子は、右から左へ評価されるという特徴も持っています。

そのため、次のような書き方も可能です。

a = b = 10;

この場合、

  1. まず b = 10 が評価される。
  2. b に 10 が代入され、その結果の値は 10
  3. 次に a = 10 が評価される。

結果として、a と b の両方に 10 が入ります。

少しトリッキーに見えますが、
「代入は右から左」
と覚えておけば、落ち着いて理解できます。

代入演算子を理解するコツ

代入演算子で混乱しやすい原因は、
「数学の感覚で見てしまうこと」
にあります。

おすすめなのは、次の考え方です。

  • = は「計算結果を箱に入れる命令」
  • まず右側を全部計算する。
  • 最後に左側に代入する。
  • += などは必ず普通の形に書き直して考える。

このクセをつけておくと、
後で出てくる複雑な式も怖くなくなりますよ😊