
C言語基礎|if文とelseによる分岐
if文に「それ以外」を教えよう
前回学習した if 文は、
「条件が成り立つときだけ処理を行う」
というものでした。
しかし、それだけだと、
- 条件が成り立たないときに何も起きない。
- 実行した人が結果を判断しづらい。
という場面が出てきます。
そこで登場するのが else です。
else を使うと、
条件が成り立たなかった場合の処理
をはっきりと書けるようになります。

else付きif文の基本構造
else を含んだ if 文の基本形は、次のとおりです。
| 書式 | 意味 |
|---|---|
| if (式) 文1 else 文2 | 条件に応じてどちらか一方を実行 |
この構造では、
必ずどちらか一方の文が実行されます。
if–else文の流れを図で理解する
if–else 文の処理の流れを、文章による図で表すと次のようになります。
if–else 文の流れ
- 制御式を評価する
- 値が非0
→ 文1を実行 - 値が0
→ 文2を実行
ポイントは、
両方とも実行されることはない
どちらも実行されないこともない
という点です。

サンプル①:点数による合否判定
ここでは、
入力した点数が60点以上かどうかを判定する
プログラムに変更してみましょう。
サンプルプログラム
プロジェクト名:chap3-2-1 ソースファイル名:chap3-2-1.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;
}実行例
点数を入力してください:75
合格です。おめでとう!
点数を入力してください:42
今回は不合格です。条件に応じて、必ずどちらかのメッセージが表示されます。
if文だけの場合との違い
if文だけの場合と、if–else文の違いを整理してみましょう。
| 構造 | 特徴 |
|---|---|
| if (式) 文 | 条件が成り立つときだけ実行 |
| if (式) 文1 else 文2 | 条件に応じて必ずどちらか実行 |
「結果を必ず表示したい」「判断結果を明確にしたい」
そんな場面では、if–else 文がとても便利です。
サンプル②:正の数か負の数かを判定する
次は、
入力した数が正の数かどうか
を判定するプログラムです。
サンプルプログラム
プロジェクト名:chap3-2-2 ソースファイル名:chap3-2-2.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
puts("その数は0以下です。");
return 0;
}実行例
整数を入力してください:12
その数は正の数です。
整数を入力してください:-3
その数は0以下です。制御式には「値そのもの」も使える
if 文の制御式は、
比較式だけでなく、値そのものを書くこともできます。
非ゼロとゼロの考え方
| 値 | 判定 |
|---|---|
| 非0 | 条件が成り立つ |
| 0 | 条件が成り立たない |
これを使うと、次のような書き方ができます。
if (num)
puts("ゼロではありません。");
else
puts("ゼロです。");数値をそのまま条件として使えます。
if文とif–else文の使い分け
ここで、2種類の if 文を整理しておきましょう。
if文
| 形 | 用途 |
|---|---|
| if (式) 文 | 条件が成立したときだけ処理したい。 |
if–else文
| 形 | 用途 |
|---|---|
| if (式) 文1 else 文2 | 条件に応じて処理を分けたい。 |
プログラムの意図に応じて、
どちらを使うか選ぶことが大切です。
演習問題:if–elseを使った判定問題
演習3-1
二つの整数を読み込み、
後者が前者の倍数であれば
BはAの倍数です。
そうでなければ
BはAの倍数ではありません。
と表示するプログラムを作成せよ。
解答例
プロジェクト名:chap3-2-3 ソースファイル名:chap3-2-3.c
Visual Studio でこのプログラムを実行するには、SDLチェック設定を変更しておく必要があります。
1.プロジェクト名を右クリックして、「プロパティ」をクリックします。
2.「C/C++」→「全般」→「SDLチェック」を「いいえ」に切り替えて「OK」をクリックします。
#include <stdio.h>
int main(void)
{
int a, b;
printf("二つの整数を入力してください。\n");
printf("整数A:");
scanf("%d", &a);
printf("整数B:");
scanf("%d", &b);
if (b % a == 0)
puts("BはAの倍数です。");
else
puts("BはAの倍数ではありません。");
return 0;
}if–elseを使うと「説明できるプログラム」になる
if–else 文を使うことで、
- 判断結果が必ず表示される。
- 利用者が結果を理解しやすい。
- プログラムの意図が明確になる。
というメリットがあります。
この次は、
else if による複数条件分岐
へ進むと、さらに表現力が広がります 🚀
ここまで理解できれば、
「プログラムが選択肢を持つ」 という感覚が身についてきます 👍
次は複数の条件を扱う else if が楽しみですね。
