C言語のきほん|C言語の演算のしくみ

C言語の計算は、式と演算子が主役。しくみを押さえると、コードの意味がスッと読めるようになる。

第5章では、printf で値を表示したり、scanf で値を入力したりして、「プログラムが外とやり取りできる」ようになりました。
第6章では、いよいよその値を使って、プログラムの中で 演算 を行っていきます。

演算というと足し算・引き算のイメージが強いですが、C言語での演算はもっと広い意味を持ちます。

  • 数値を計算する(足す、引く、掛ける、割る)
  • 条件を比べる(大きいか、小さいか、等しいか)
  • 条件を組み合わせる(かつ、または、否定)
  • 値を代入して更新する(右辺の結果を左辺へ入れる)
  • 符号を反転する、1増やす、1減らす

こうした「データを操作するための仕組み」が、演算子と式です。
この節では、演算の土台になる 式・式文・演算子・オペランド を、やさしく丁寧に整理していきます。

演算を理解するための4つのキーワード

ここを押さえると、C言語の演算がスッキリ見えてきます。

用語ざっくり言うと
値を作るもの(計算や代入、関数呼び出しなど)a + 10、x = y、sqrt(16.0)
式文式にセミコロンを付けて実行できる形にしたものa = 5 + 3;
演算子操作を表す記号+、-、*、/、=、>、&&
オペランド演算の対象(操作される側)a、10、(a + b)

この4つを順番に見ていきましょう。

式とは

式は、C言語で「値を表したり、値を計算して作ったりするもの」です。
式の結果は、何らかの値になります(数値や文字、または処理結果など)。

式の例

次のようなものが式です。

  • 123(数値定数)
  • 'X'(文字定数)
  • "COMPUTER"(文字列リテラル)
  • a(変数)
  • a + 10(演算子で結合した式)
  • y = x(代入も式)
  • sum = a + b(計算して代入する式)
  • sqrt(16.0)(関数呼び出しも式)

ポイントは、C言語では 代入も式 だということです。
これが他の言語から来た人が少し驚くポイントでもあります。

代入式とは

代入式は、右辺で得られた値を左辺の変数へ入れる式です。
代入演算子 = を使います。

代入式の例

int a, b;
a = 5;
b = a;
  • a = 5 は「5をaに入れる」
  • b = a は「aの値(今は5)をbに入れる」

代入は「計算結果を保存して、後で使えるようにする」ための基本動作です。

式文とは

式だけでは「計算の形」ですが、実際にプログラムとして動かすには「文」として書く必要があります。
そこで出てくるのが式文です。

式文は、式の後ろにセミコロンを付けたものです。

例:計算して代入する式文

a = 5 + 3;

この1行が実行されると、

  1. 5 + 3 が計算される
  2. 結果の 8 が a に代入される

という流れになります。

例:関数呼び出しも式文になる

printf("%d", a);

printf の呼び出しは式であり、セミコロンを付けることで式文になって実行されます。

演算子とは

演算子は、式の中で「操作」を表す記号です。
たとえば + は加算、- は減算です。

よく出てくる算術演算子

演算子意味
+足し算a + b
-引き算a - b
*掛け算x * y
/割り算x / y

この章では、算術演算子だけでなく、比較や論理の演算子も扱っていきますが、まずは「演算子は操作の記号」と覚えるのが大切です。

オペランドとは

オペランドは、演算子によって操作される対象です。
変数や定数だけでなく、式そのものがオペランドになることもあります。

例:

  • a + 10 のオペランドは a と 10
  • sum = a + b のオペランドは sum と (a + b)

演算子はオペランドに対して操作を行い、結果を作ります。

単項・2項・3項演算子

C言語の演算子は、オペランドがいくつ必要か(項の数)で分類できます。

種類オペランド数何をするか
単項演算子1-a、++x1つの値を操作する
2項演算子2a + b、x * y2つの値で計算する
3項演算子3(a > b) ? a : b条件で値を選ぶ

単項演算子の例

  • -a は符号反転(aが5なら-5)
  • ++x はインクリメント(xを1増やす)

2項演算子の例

  • a + b は加算
  • x * y は乗算

3項演算子の例(条件演算子)

(a > b) ? a : b

意味はこうです。

  • a > b が真なら a
  • 偽なら b

この演算子は、条件によって結果を選ぶときに使います。

図で見る「項の数による分類」

文字の図にすると、イメージがつかみやすいです。

サンプルプログラムで「式」と「式文」を体験しよう

「式が値を作り、式文で実行される」ことがわかるプログラム例です。

ファイル名:6_1_1.c

#include <stdio.h>

int main(void)
{
    int a = 7;
    int b = 3;

    /* 2項演算子で式を作って、結果を変数に代入する(代入式) */
    int sum = a + b;      /* a + b は式 */
    int diff = a - b;
    int prod = a * b;
    int quot = a / b;     /* int同士の割り算は小数にならない点に注意 */

    /* 単項演算子の例(符号反転) */
    int neg_a = -a;

    /* 3項演算子の例(大きい方を選ぶ) */
    int max_value = (a > b) ? a : b;

    printf("a=%d, b=%d\n", a, b);
    printf("足し算 a+b=%d\n", sum);
    printf("引き算 a-b=%d\n", diff);
    printf("掛け算 a*b=%d\n", prod);
    printf("割り算 a/b=%d\n", quot);
    printf("符号反転 -a=%d\n", neg_a);
    printf("大きい方 max(a,b)=%d\n", max_value);

    return 0;
}

実行結果例

a=7, b=3
足し算 a+b=10
引き算 a-b=4
掛け算 a*b=21
割り算 a/b=2
符号反転 -a=-7
大きい方 max(a,b)=7

サンプルプログラムの解説

式は値を作る

たとえばこの行の右側は式です。

int sum = a + b;

a + b という式が計算されて値 10 ができて、その値が sum に入ります。

セミコロンが付くと実行される

上の行は初期化の形ですが、同じことを式文として書くとこうです。

sum = a + b;

セミコロンがあるので、この式が実行されます。
式文は「実行される単位」だと思うとわかりやすいです。

3項演算子は条件で値を選ぶ

int max_value = (a > b) ? a : b;
  • a > b が真なら a
  • 偽なら b

条件で値を選べるので、短く書けて便利です。

この章につながる見取り図

ここまでの内容は、これから学ぶ算術演算子・関係演算子・論理演算子の土台になります。
演算子が増えても、基本の考え方は同じです。

  • オペランド(対象)
  • 演算子(操作)
  • 式(値を作る)
  • 式文(実行する)

この4つが頭に入っていると、どんな演算でも読み解きやすくなります。