
【6日でできるC言語入門】条件分岐
C言語のプログラムは、与えられた条件によって処理を切り替えることができます。これを「条件分岐」と呼びます。たとえば「数値が正ならメッセージを表示する」「点数が合格点以上なら合格、不合格ならメッセージを変える」といった使い方ができます。条件分岐は、プログラムの流れを柔軟に制御するための基本技術であり、実際の開発では必ず必要になる構文です。
ここでは、if文・switch文の基本から、比較演算子、よく使われる条件分岐の書き方まで具体的に解説します。

1.if文による条件分岐
1.1. if文の基本
if文は「もし○○なら」という条件判断に使います。
書式は以下の通りです。
if (条件式) {
// 条件が真(true)のとき実行される処理
}1.2. 比較演算子の一覧
条件式では比較演算子を使い、値同士を比べます。主な演算子は以下の通りです。
| 演算子 | 意味 | 例 |
|---|---|---|
| > | より大きい | a > 0 |
| >= | 以上 | a >= 0 |
| < | より小さい | a < 0 |
| <= | 以下 | a <= 0 |
| == | 等しい | a == 0 |
| != | 等しくない | a != 0 |
2.if文のサンプルプログラム
2.1. 入力値の判定
以下は、入力された整数が偶数か奇数かを判定してメッセージを表示するサンプルです。
プロジェクト/ファイル名: Lesson19_1/main.c
#include <stdio.h>
int main(void) {
int number;
printf("整数を入力してください:");
scanf("%d", &number);
if (number % 2 == 0) {
printf("入力した値は偶数です。\n");
} else {
printf("入力した値は奇数です。\n");
}
return 0;
}scanf関数とSDLチェック
プログラムを実行すると、以下のように scanf 関数の部分に緑色の波線が表示されます。

このプログラムを実行するためには、「SDLチェック」を無効にする必要があります。その理由は、 scanf 関数を使うからです。実は、この scanf 関数は安全性に問題があるため、使用することは推奨されていないのです。
6行目に出てくるscanf関数に注目します。
scanf("%d", &number);scanf(スキャンエフ)関数は、キーボードから入力した値を変数に代入する関数です。整数型の変数に値を入れるには、変数名の先頭に「&(アンパサンド)」を付け、前に整数を表す %d と記入します。
その理由ですが、scanf は「どこに値を代入するか(=アドレス)」を知る必要があるからです。number だけ書くと「値(中身)」しか渡せません。&number とすることで、「numberのある場所(メモリアドレス)」を渡せるようになります。
「SDLチェック」あり
「SDLチェック」を外さずに、このプログラムを実行すると以下のエラーが発生して実行することができません。
戻り値が無視されました: 'scanf'
'scanf': This function or variable may be unsafe. Consider using scanf_s instead.
To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.「SDLチェック」なし
「SDLチェック」を「いいえ」にして、プログラムを実行します。

実行結果
整数を入力してください:4
入力した値は偶数です。
整数を入力してください:7
入力した値は奇数です。注意
Visual StudioではSDLチェックを「いいえ」にしないと、scanfなどの非推奨の関数は使えないようになっています。
2.2. else文とelse if文
if文には、条件に合わない場合の処理を書くelseや、複数条件を分岐するelse ifも使えます。
if (score >= 80) {
printf("とても良い点数です!\n");
} else if (score >= 60) {
printf("合格です。\n");
} else {
printf("再試験です。\n");
}3.switch文による条件分岐
3.1. switch文の基本
複数の値で分岐させたいときは、switch文が便利です。
主に「選択肢が複数あるメニュー」などで使われます。
switch (変数) {
case 値1:
// 値1のときの処理
break;
case 値2:
// 値2のときの処理
break;
default:
// それ以外の処理
break;
}3.2. switch文のサンプル
プロジェクト/ファイル名: Lesson19_2/main.c
#include <stdio.h>
int main(void) {
int menu;
printf("メニュー番号を選んでください(1~3):");
scanf("%d", &menu);
switch (menu) {
case 1:
printf("カレーを選びました。\n");
break;
case 2:
printf("ラーメンを選びました。\n");
break;
case 3:
printf("サラダを選びました。\n");
break;
default:
printf("不正な番号です。\n");
break;
}
return 0;
}実行結果
「SDLチェック」を「いいえ」にして、プログラムを実行します。
メニュー番号を選んでください(1〜3):2
ラーメンを選びました。まとめ
- 条件分岐はif文やswitch文で実現できる。
- 比較演算子やelse, else ifなどの構文も活用できる。
- 条件による処理の分岐は、実用的なプログラム作成に欠かせない基本技術
条件分岐をマスターすると、プログラムで複雑な判断処理ができるようになります。
