
C言語のきほん|関係演算子による条件分岐
< と <= の違いで結果が変わる!関係演算子を正しく使って、狙い通りに分岐させよう。
if 文で分岐を作るとき、いちばんよく使うのが「大小を比べる」関係演算子です。
たとえば、
- 0未満なら注意する
- 60以上なら合格にする
- 1〜100の範囲に入っているかチェックする
みたいな条件は、関係演算子がないと書けません。
そしてこの分野でつまずきやすいのが、< と <= のような、= が付くか付かないかの違いです。
たった1文字の差なのに、判定結果が変わるので、ここを丁寧に押さえていきましょう。
関係演算子(大小比較)のおさらい
| 演算子 | 意味 | 例 | 日本語で読むと |
|---|---|---|---|
| < | より小さい | n < 0 | n は 0 より小さい |
| <= | 以下 | n <= 0 | n は 0 以下 |
| > | より大きい | n > 10 | n は 10 より大きい |
| >= | 以上 | n >= 60 | n は 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 より小さい?」という意味です。
| balance | balance < 0 | 動作 |
|---|---|---|
| -1 | 1(真) | 警告が出る |
| 0 | 0(偽) | 警告は出ない |
| 5 | 0(偽) | 警告は出ない |
ここで「0は負ではない」ので、0のときに警告が出ないのが正しい動きです。
= が付くか付かないかで意味が変わる(ここが落とし穴)
文書にもある通り、たとえば間違えてこう書くと、
if (balance <= 0)
0も条件に含まれてしまいます。つまり「0もマイナス扱い」になります。
< と <= の違いを表で一発確認
| 条件 | -1 | 0 | 1 | 判定の意味 |
|---|---|---|---|---|
| n < 0 | 真 | 偽 | 偽 | 0より小さい |
| n <= 0 | 真 | 真 | 偽 | 0以下(0を含む) |
この1文字の違いで、0の扱いが変わります。
条件式は「境界値」を先に決めると書きやすい
関係演算子の分岐は、境界(ボーダー)で迷いやすいので、次の手順で考えると事故が減ります。
- 境界の値は何?(例:0)
- 境界の値は“含める”?“含めない”?(0をマイナス扱いする?しない?)
- それに合わせて < か <= を決める
たとえば「0はOKで、マイナスだけNG」なら < です。
「0もNG」なら <= です。
もう一つ例:合格判定は >= が自然
よくある「60点以上で合格」は、境界の 60 を含めたいので >= を使います。
- score >= 60:60は合格に含まれる
この“含めたいときは = が付く方”という感覚が身につくと、条件式が作りやすくなります。
関係演算子の書き間違い注意
よくあるミスも軽く押さえておきます。
- => や =< は存在しません
- = や < = のようにスペースを入れません(>= や <= が1つの演算子です)
