C言語のきほん|関係演算子による条件分岐

< と <= の違いで結果が変わる!関係演算子を正しく使って、狙い通りに分岐させよう。

if 文で分岐を作るとき、いちばんよく使うのが「大小を比べる」関係演算子です。
たとえば、

  • 0未満なら注意する
  • 60以上なら合格にする
  • 1〜100の範囲に入っているかチェックする

みたいな条件は、関係演算子がないと書けません。

そしてこの分野でつまずきやすいのが、< と <= のような、= が付くか付かないかの違いです。
たった1文字の差なのに、判定結果が変わるので、ここを丁寧に押さえていきましょう。

関係演算子(大小比較)のおさらい

演算子意味日本語で読むと
<より小さいn < 0n は 0 より小さい
<=以下n <= 0n は 0 以下
>より大きいn > 10n は 10 より大きい
>=以上n >= 60n は 60 以上

結果は、真なら1、偽なら0になります(if では 1 が真として扱われます)。

if と関係演算子の基本形

if(比較した結果が真){
    実行する
}

条件式が偽なら、ブロック { } の中は実行されずに次へ進みます。

サンプルプログラム

「残高が0未満なら警告を出す」サンプルプログラムです。

ファイル名:8_2_1.c

#include <stdio.h>

int main(void)
{
    int balance;

    printf("残高(円)を入力してください > ");
    scanf("%d", &balance);

    /* 残高が0未満なら警告を出す */
    if (balance < 0) {
        printf("警告: 残高がマイナスです。\n");
    }

    printf("現在の残高は%d円です。\n", balance);
    return 0;
}

このプログラムは、

  • balance が 0未満なら警告を表示
  • そうでなければ警告は出さない

という、シンプルで分かりやすい分岐になります。

条件式 if (balance < 0) を丁寧に読む

この条件式は「balance は 0 より小さい?」という意味です。

balancebalance < 0動作
-11(真)警告が出る
00(偽)警告は出ない
50(偽)警告は出ない

ここで「0は負ではない」ので、0のときに警告が出ないのが正しい動きです。

= が付くか付かないかで意味が変わる(ここが落とし穴)

文書にもある通り、たとえば間違えてこう書くと、

if (balance <= 0)

0も条件に含まれてしまいます。つまり「0もマイナス扱い」になります。

< と <= の違いを表で一発確認

条件-101判定の意味
n < 00より小さい
n <= 00以下(0を含む)

この1文字の違いで、0の扱いが変わります。

条件式は「境界値」を先に決めると書きやすい

関係演算子の分岐は、境界(ボーダー)で迷いやすいので、次の手順で考えると事故が減ります。

  1. 境界の値は何?(例:0)
  2. 境界の値は“含める”?“含めない”?(0をマイナス扱いする?しない?)
  3. それに合わせて < か <= を決める

たとえば「0はOKで、マイナスだけNG」なら < です。
「0もNG」なら <= です。

もう一つ例:合格判定は >= が自然

よくある「60点以上で合格」は、境界の 60 を含めたいので >= を使います。

  • score >= 60:60は合格に含まれる

この“含めたいときは = が付く方”という感覚が身につくと、条件式が作りやすくなります。

関係演算子の書き間違い注意

よくあるミスも軽く押さえておきます。

  • => や =< は存在しません
  • = や < = のようにスペースを入れません(>= や <= が1つの演算子です)