
C言語基礎|if文の形式と構文
if文は「形」がとても大事
if 文は、条件によって処理を分けるための重要な文ですが、
決められた形(構文)を厳密に守る必要があります。
C言語では、
- 見た目がそれっぽくても
- 人間には意味が通じていても
構文に合っていなければコンパイルエラーになります。
そこで今回は、
if 文の形式と構文を「形」からしっかり理解する
ことを目的に進めていきましょう。

if文の構文とは何か
プログラミング言語では、
文の正しい書き方を表したものを 構文 と呼びます。
if 文の構文図は、次の形で表されます。
if 文の構文
if → ( 式 ) → 文 → [ else → 文 ]
この構文は、
if 文として許される書き方のすべて
を表しています。
構文の読み方の基本
構文図は、次のルールで読みます。
| ルール | 意味 |
|---|---|
| 左から右へ進む | 文の流れ |
| 矢印に従う | 書ける順番 |
| 分岐はどちらでもよい | 書き方の選択肢 |
| [] で囲まれた部分 | あってもなくてもよい |
このルールを if 文に当てはめてみましょう。
if文の2つの正式な形式
構文図から分かる if 文の形式は、次の2つだけです。
| 形式 | 説明 |
|---|---|
| if (式) 文 | 条件が真のときだけ実行 |
| if (式) 文 else 文 | 条件に応じて処理を分ける |
これ以外の形は、すべてエラーになります。
書けないif文の例(構文エラー)
構文図に合わない if 文は、
コンパイル時に必ずエラーになります。
例①:条件式を()で囲んでいない
if score > 60
puts("合格です。");エラーの理由
- 式は必ず ( ) で囲む必要がある
例②:if の後に文がない
if (x % 3)
else
puts("3で割り切れます。");エラーの理由
- if の直後には必ず 文 が必要
「文」とは何かを正しく理解しよう
構文に出てくる「文」は、とても重要です。
C言語でいう 文 とは、次のいずれかです。
| 種類 | 例 |
|---|---|
| 式文 | x = 3; |
| 関数呼び出し | puts("OK"); |
| 複文 | { 文 文 … } |
| 制御文 | if 文、while 文など |
if 文の後ろに書けるのは、
文は1つだけ という点がポイントです。
サンプル①:文が1つのif文
まずは、文が1つだけの if 文です。
プロジェクト名:chap3-3-1 ソースファイル名:chap3-3-1.c
Visual Studio でこのプログラムを実行するには、SDLチェック設定を変更しておく必要があります。
1.プロジェクト名を右クリックして、「プロパティ」をクリックします。
2.「C/C++」→「全般」→「SDLチェック」を「いいえ」に切り替えて「OK」をクリックします。
// 温度が高いかどうかを判定する
#include <stdio.h>
int main(void)
{
int temp;
printf("温度を入力してください:");
scanf("%d", &temp);
if (temp >= 30)
puts("今日は暑いですね。");
return 0;
}ここでは、
- if (式)
- puts(...) ← 文(1つ)
という構造になっています。
複数の処理を行いたいときの注意点
次のように書くと、意図と違う動きになります。
if (score >= 60)
puts("合格です。");
puts("よく頑張りました。");この場合、
- if に含まれるのは最初の puts だけ
- 次の puts は常に実行される
という構造になります。
複文を使った正しい書き方
複数の処理をまとめたい場合は、
複文(ブロック) を使います。
if (score >= 60) {
puts("合格です。");
puts("よく頑張りました。");
}構文上では、
- 文 → 複文
として扱われます。
サンプル②:elseを含む構文の確認
次は else を含んだ例です。
プロジェクト名:chap3-3-2 ソースファイル名:chap3-3-2.c
Visual Studio でこのプログラムを実行するには、SDLチェック設定を変更しておく必要があります。
1.プロジェクト名を右クリックして、「プロパティ」をクリックします。
2.「C/C++」→「全般」→「SDLチェック」を「いいえ」に切り替えて「OK」をクリックします。
// 数値が正か負かを判定する
#include <stdio.h>
int main(void)
{
int num;
printf("整数を入力してください:");
scanf("%d", &num);
if (num >= 0)
puts("正またはゼロです。");
else
puts("負の数です。");
return 0;
}この形は、構文の
if → ( 式 ) → 文 → [ else → 文 ]
をそのまま辿った形になっています。
構文が教えてくれる大切なこと
構文図から読み取れる重要ポイントを整理しましょう。
| ポイント | 内容 |
|---|---|
| if の後は必ず (式) | 省略不可 |
| ( ) の後は必ず 文 | 空は不可 |
| else は省略可能 | あってもなくてもよい |
| else がある場合 | 文が必須 |
| 文は1つだけ | 複数なら { } を使う |
構文を理解するとバグが減る
if 文で起きやすいバグの多くは、
- 文の範囲を勘違いしている。
- 構文を意識していない。
ことが原因です。
構文を頭の中でなぞりながら書く
これだけで、ミスはぐっと減ります 👍
ここまで理解できれば、
if文を「感覚」ではなく「構文」で書ける ようになります ✨
次は、else if による多分岐が自然につながってきますよ。
