C言語基礎|関係演算子

― 数値の大小を条件として扱う ―

これまでの if 文では、「等しいかどうか」や「ゼロかどうか」といった
2 択の判断を中心に扱ってきました。

しかし、実際のプログラムでは、

  • ある値より大きいか
  • ある範囲に収まっているか
  • 基準値を超えているか

といった 大小関係による判断 を行う場面が数多く登場します。

ここでは、そのために使われる 関係演算子 を学び、
if 文と組み合わせて 3 つ以上に分岐する処理 を理解していきましょう。

3 つに分岐する条件判定を考える

まずは、次の問題を考えてみます。

整数値を読み込み、その値が「ゼロ」「正の数」「負の数」のどれに当たるかを判定する。

これは、

  • 値が 0 かどうか
  • 0 より大きいかどうか
  • それ以外かどうか

という 大小関係を使った条件分岐 で実現できます。

サンプルプログラム:数値の状態を判定する

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

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

// 読み込んだ整数値の状態を判定する
#include <stdio.h>

int main(void)
{
    int value;

    printf("整数を入力してください:");
    scanf("%d", &value);

    if (value == 0)
        puts("入力された値はゼロです。");
    else if (value > 0)
        puts("入力された値は正の数です。");
    else
        puts("入力された値は負の数です。");

    return 0;
}

実行例

整数を入力してください:0
入力された値はゼロです。

整数を入力してください:18
入力された値は正の数です。

整数を入力してください:-7
入力された値は負の数です。

if ~ else if ~ else の流れ

このプログラムでは、次のような順序で条件が評価されます。

  1. value が 0 と等しいか
  2. そうでなければ、value が 0 より大きいか
  3. それ以外(負の数)

このように、上から順に条件を判定し、最初に成立した分岐だけが実行されます。
これによって、3 つ以上の選択肢を自然に表現できます。

> 演算子の役割

ここで初めて使われているのが、次の演算子です。

value > 0

この > は、関係演算子 の一つで、

  • 左側の値が右側の値より大きければ 1
  • そうでなければ 0

という int 型の値 を生成します。

その結果が if 文の制御式として使われています。

関係演算子の一覧

大小関係を判定する演算子をまとめると、次の 4 つになります。

演算子意味
a < ba が b より小さければ 1、そうでなければ 0
a > ba が b より大きければ 1、そうでなければ 0
a <= ba が b 以下であれば 1、そうでなければ 0
a >= ba が b 以上であれば 1、そうでなければ 0

いずれも、評価結果は int 型の 1 または 0 になります。

注意:演算子の書き方

<= や >= は 2 文字で 1 つの演算子 です。

次のような書き方はできません。

  • =<
  • =>
  • < =
  • =

必ず <=、>= の形で続けて書きましょう。

サンプルプログラム②:基準値との比較

関係演算子は、基準値と比較する場面でもよく使われます。

次は、テストの点数が合格点以上かどうかを判定する例です。

プロジェクト名:chap3-5-2 ソースファイル名:chap3-5-2.c

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

// 点数が合格点以上かどうかを判定
#include <stdio.h>

int main(void)
{
    int score;

    printf("点数を入力してください:");
    scanf("%d", &score);

    if (score >= 60)
        puts("合格です。");
    else
        puts("不合格です。");

    return 0;
}

実行例

点数を入力してください:72
合格です。

点数を入力してください:48
不合格です。

等価演算子との違いを意識しよう

ここで、前回学習した 等価演算子 と比べてみましょう。

  • 等価演算子
    → 値が同じかどうかを判定する。
  • 関係演算子
    → 値の大小関係を判定する。

どちらも 条件を作るための演算子 であり、
if 文の制御式として使われる点は共通しています。

まとめ:関係演算子で分岐の幅が広がる

関係演算子を使えるようになると、

  • ゼロ・正・負の判定
  • 合格・不合格の判定
  • 範囲チェック

など、現実的な条件分岐 を表現できるようになります。

if 文と組み合わせて、
「値を比べて判断する」という感覚を、しっかり身につけていきましょう。