C言語基礎|代入演算子

これまでの内容では、計算結果をそのまま表示したり、初期化によって値を変数に入れたりしてきました。
ここでは、計算した結果を変数に記録するための基本的な仕組みである
代入演算子について、改めて整理していきましょう。

C言語では、変数に値を入れるために = 演算子 を使います。
この演算子は、正式には 単純代入演算子(simple assignment operator)と呼ばれますが、
一般には単に 代入演算子 と呼ばれます。

単純代入演算子とは

代入演算子は、次のような形で使われます。

a = b;

これは、

  • 右側の値 b を
  • 左側の変数 a に入れる

という意味になります。

単純代入演算子の定義

演算子形式意味
=a = bb の値を a に代入する。

代入演算子は オペランドを2つ持つ ため、2項演算子に分類されます。

式とは何か

C言語では、値を表すものをまとめて 式(expression) と呼びます。

たとえば、次のものはすべて式です。

x
42
x + 10

これらは、

  • 変数
  • 定数
  • 演算によって作られた値

という違いはありますが、すべて式として扱われます

代入式という考え方

次に、代入を含む次の記述を見てみましょう。

total = price - discount;

この場合、

  • 左オペランド:total
  • 右オペランド:price - discount

となっています。

このように、代入演算子を含む式
代入式(assignment expression) と呼びます。

重要なのは、次の点です。

代入そのものも「式」として扱われる

つまり、

total = price - discount

全体が 1つの式 なのです。

サンプルプログラムで確認しよう

では、代入演算子を使って
計算結果を変数に保存してから表示する プログラムを見てみましょう。

プロジェクト名:chap2-4-1 ソースファイル名:chap2-4-1.c

Visual Studio でこのプログラムを実行するには、SDLチェック設定を変更しておく必要があります。
1.プロジェクト名を右クリックして、「プロパティ」をクリックします。
2.「C/C++」→「全般」→「SDLチェック」を「いいえ」に切り替えて「OK」をクリックします。

// 合計金額と残額を計算して表示
#include <stdio.h>

int main(void)
{
    int budget = 1000;
    int cost;

    printf("使った金額を入力してください:");
    scanf("%d", &cost);

    int rest = budget - cost;   // 代入演算子による代入

    printf("予算は%d円です。\n", budget);
    printf("残りは%d円です。\n", rest);

    return 0;
}

実行例

使った金額を入力してください:380
予算は1000円です。
残りは620円です。

このプログラムでは、

rest = budget - cost;

という 代入式 によって、

  1. budget - cost が計算され
  2. その結果が rest に代入され

ています。

式文とは

代入式だけでは、まだ文にはなっていません
C言語では、文の末尾には必ずセミコロン ; を付ける必要があります。

rest = budget - cost;

このように、

  • セミコロン ;

を組み合わせたものを 式文(expression statement) と呼びます。

まとめると

用語説明
値を持つもの(計算や代入も含む)
代入式= を使った式
式文式の末尾に ; を付けたもの

代入は「等しい」ではない

初心者の方がよく混乱するポイントとして、
代入演算子 = を「等しい」という意味で捉えてしまうことがあります。

x = 5;

これは、

  • x と 5 が等しい

という意味ではありません。

正しくは、

  • 5 という値を x に入れる

という 一方向の操作 です。

数学の等号とは、意味が異なる点に注意しましょう。

ここまでのポイント整理

  • = は 代入演算子
  • 代入は 右から左 へ行われる
  • 代入も 式の一種
  • 式の末尾に ; を付けると になる

これらは、今後の if 文や while 文を理解するための 重要な土台 になります。