if文とは
if文とは、条件によって処理を分岐するための構文です。
プログラムは通常、上から順番に処理が実行されますが、
if文を使うことで「条件によって異なる処理」を実現できます。
初心者さんプログラムって上から順に動くだけじゃないんですか?



基本はそうだけど、条件によって処理を変えたい場面が多いんだよ。そのときに使うのがif文だね
C言語文法解説シリーズ
本記事は「C言語文法解説シリーズ」の1つです。
C言語の文法を、組み込み開発の視点も交えて解説しています。
C言語文法解説シリーズ一覧はこちら


if文の基本構文
if (条件式) {
処理;
}条件式が「真(true)」の場合のみ、波括弧内の処理が実行されます。
条件式とは
条件式とは、真(true)または偽(false)を判定する式です。
例えば:
int a = 10;
if (a > 5) {
printf("aは5より大きい\n");
}この場合、a > 5 が真なので、printfが実行されます。
条件式の真(true)と偽(false)とは?
C言語では、条件式の結果は「真(true)」か「偽(false)」で判断されます。
ただし、他の言語と違ってC言語では少し特徴があります。
C言語におけるtrue / falseの扱い
C言語では以下のように扱われます。
- 0 → 偽(false)
- 0以外 → 真(true)
int a = 10;
if (a) {
printf("aは0ではない(true)\n");
}この場合、a は10なので true として扱われ、ifの中が実行されます。



え、条件式って比較じゃなくてもいいんですか?



いいよ。C言語では“0かどうか”で判断されるからね
bool型とは?(C99以降)
C言語にも「true / false」を明示的に扱うための型があります。
それが bool型 です。
使用するには、以下のヘッダをインクルードします。
#include <stdbool.h>bool型の使い方
#include <stdio.h>
#include <stdbool.h>
int main(void) {
bool flag = true;
if (flag) {
printf("trueです\n");
}
return 0;
}実は中身は整数
bool型は内部的には整数として扱われています。
- true → 1
- false → 0
つまり、結局は「0かどうか」で判定されている点は同じです。
実務での使い分け
- シンプルな条件 → intでもOK
- 可読性を重視 → boolを使う
例えば:
bool is_initialized = true;こう書くことで、「何を表す変数なのか」が分かりやすくなります。
boolを含む型の詳細についてはこちらの記事で解説しています。


else文(条件が偽の場合)
条件が偽だった場合の処理は、elseを使います。
if (条件式) {
処理A;
} else {
処理B;
}例:
int a = 3;
if (a > 5) {
printf("大きい\n");
} else {
printf("小さい\n");
}


じゃあ、条件に合わなかったときの処理も書けるんですね



そう。elseは“それ以外”って意味だね
else if(複数条件の分岐)
複数の条件を扱う場合は、else ifを使います。
if (条件1) {
処理1;
} else if (条件2) {
処理2;
} else {
処理3;
}例:
int score = 75;
if (score >= 90) {
printf("優\n");
} else if (score >= 70) {
printf("良\n");
} else {
printf("可\n");
}注意点①:条件式は0が偽、それ以外が真
C言語では、
- 0 → 偽(false)
- 0以外 → 真(true)
として扱われます。
if (0) {
// 実行されない
}
if (1) {
// 実行される
}注意点②:= と == の違い
if (a = 5) // ←代入(バグの原因)
if (a == 5) // ←比較(正しい)これは初心者が最もやりがちなミスです。



あれ、なんかifが変な動きするんですけど…



それ、“=”と“==”間違えてるパターンだね。現場でも普通に起きるやつ
注意点③:波括弧を省略できるが非推奨
if (a > 5)
printf("大きい\n");1行なら省略可能ですが、バグの原因になるため基本は書くべきです。
実務でのポイント
・条件はシンプルに書く
・ネスト(入れ子)は深くしすぎない
・可読性を意識する
switch文との違い
if文と似た構文として、switch文があります。
switch文は、条件ではなく「値」によって分岐する構文です。
違いのイメージ
- if文 → 条件で分岐(例:70点以上か?)
- switch文 → 値で分岐(例:1・2・3どれか)
使い分けの目安
- 複雑な条件や範囲 → if文
- 固定の値による分岐 → switch文



どっち使えばいいか迷いそうです…



“条件か値か”で考えると分かりやすいよ
switch文について詳しく知りたい方へ
switch文は、値による分岐を分かりやすく書ける便利な構文です。


まとめ
- if文は条件分岐の基本構文
- 条件が真のときだけ処理が実行される
- else / else ifで分岐を増やせる
- = と == の違いに注意
この記事が参考になった方へ
制御構文を含むC言語の基本文法をこちらの記事で整理しています。


技術に関するご相談・開発・自動化ツール作成・記事執筆などのご依頼も承っています。
小さなご相談からでもお気軽にご連絡ください。









コメント