
【6日でできるC言語入門】if文のネスト
プログラムで分岐処理を行う際、if文のネスト(入れ子構造)は不可欠なテクニックです。if文の中にさらにif文を記述することで、より細かい条件分岐や多段階の判定を行うことができます。
ここでは、if文のネストの基礎から実践的な活用例までを、具体的なサンプルプログラムやフローチャートを使って解説します。

1.if文のネストの基本
1.1. ネストの意味と書き方
if文のネストとは、if文の内部に別のif文を配置し、2段階以上の判定を行う方法です。
複雑な条件判定をシンプルに書くために使われます。
サンプルプログラム1:2つの値が両方とも偶数か判定
プロジェクト/ファイル名: Lesson23_1/main.c
#include <stdio.h>
int main(void) {
int a, b;
printf("1つ目の整数を入力してください: ");
scanf("%d", &a);
printf("2つ目の整数を入力してください: ");
scanf("%d", &b);
if (a % 2 == 0) {
if (b % 2 == 0) {
printf("両方とも偶数です。\n");
} else {
printf("1つ目は偶数ですが、2つ目は偶数ではありません。\n");
}
} else {
printf("1つ目は偶数ではありません。\n");
}
return 0;
}実行結果
「SDLチェック」を「いいえ」にして、プログラムを実行します。
1つ目の整数を入力してください: 4
2つ目の整数を入力してください: 8
両方とも偶数です。
1つ目の整数を入力してください: 4
2つ目の整数を入力してください: 5
1つ目は偶数ですが、2つ目は偶数ではありません。
1つ目の整数を入力してください: 3
2つ目の整数を入力してください: 8
1つ目は偶数ではありません。
1.2. ネストの流れ(フローチャート)
if文のネストによる処理の流れは下表のようになります。
| 判定内容 | メッセージ |
|---|---|
| aが偶数, bが偶数 | 両方とも偶数です。 |
| aが偶数, bが奇数 | 1つ目は偶数ですが、2つ目は偶数ではありません。 |
| aが奇数 | 1つ目は偶数ではありません。 |
if文のネストのフローチャート

2.実践的なif文のネスト例
2.1. テストの合格判定(60点以上で合格、40点以上で追試、それ未満は不合格)
サンプルプログラム2
プロジェクト/ファイル名: Lesson23_2/main.c
#include <stdio.h>
int main(void) {
int score;
printf("テストの点数を入力してください: ");
scanf("%d", &score);
if (score >= 40) {
if (score >= 60) {
printf("合格です。\n");
} else {
printf("追試です。\n");
}
} else {
printf("不合格です。\n");
}
return 0;
}
実行結果
「SDLチェック」を「いいえ」にして、プログラムを実行します。
テストの点数を入力してください: 75
合格です。
テストの点数を入力してください: 55
追試です。
テストの点数を入力してください: 30
不合格です。| score | メッセージ |
|---|---|
| 60以上 | 合格です。 |
| 40以上60未満 | 追試です。 |
| 40未満 | 不合格です。 |
3.ネストの注意点と工夫
3.1. ネストが深くなる場合の可読性
if文を何段もネストすると、プログラムが読みづらくなります。その場合は論理演算子(&&や||)の活用や、else ifの利用で可読性を高める工夫が必要です。
例:論理演算子でシンプルに書く
if (a % 2 == 0 && b % 2 == 0) {
printf("両方とも偶数です。\n");
}まとめ
if文のネストは、多段階の判定や細かな条件分岐にとても役立ちます。ただし、ネストが深くなりすぎると読みにくくなるため、論理演算子の併用やelse ifの活用で整理することも大切です。
実践的なサンプルをもとに、ネストの仕組みと使い方をしっかり身につけましょう。
