C言語のif文とは?条件分岐の基本からelse・else ifまで徹底解説

目次

if文とは

if文とは、条件によって処理を分岐するための構文です。

プログラムは通常、上から順番に処理が実行されますが、
if文を使うことで「条件によって異なる処理」を実現できます。


初心者さん

プログラムって上から順に動くだけじゃないんですか?

エンジニアくん

基本はそうだけど、条件によって処理を変えたい場面が多いんだよ。そのときに使うのがif文だね


C言語文法解説シリーズ

本記事は「C言語文法解説シリーズ」の1つです。
C言語の文法を、組み込み開発の視点も交えて解説しています。

C言語文法解説シリーズ一覧はこちら

if文の基本構文

C
if (条件式) {
    処理;
}

条件式が「真(true)」の場合のみ、波括弧内の処理が実行されます。


条件式とは

条件式とは、真(true)または偽(false)を判定する式です。

例えば:

C
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)
C
int a = 10;

if (a) {
    printf("aは0ではない(true)\n");
}

この場合、a は10なので true として扱われ、ifの中が実行されます。


初心者さん

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

エンジニアくん

いいよ。C言語では“0かどうか”で判断されるからね


bool型とは?(C99以降)

C言語にも「true / false」を明示的に扱うための型があります。

それが bool型 です。

使用するには、以下のヘッダをインクルードします。

C
#include <stdbool.h>

bool型の使い方

C
#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を使う

例えば:

C
bool is_initialized = true;

こう書くことで、「何を表す変数なのか」が分かりやすくなります。

boolを含む型の詳細についてはこちらの記事で解説しています。

else文(条件が偽の場合)

条件が偽だった場合の処理は、elseを使います。

C
if (条件式) {
    処理A;
} else {
    処理B;
}

例:

C
int a = 3;

if (a > 5) {
    printf("大きい\n");
} else {
    printf("小さい\n");
}

初心者さん

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

エンジニアくん

そう。elseは“それ以外”って意味だね


else if(複数条件の分岐)

複数の条件を扱う場合は、else ifを使います。

C
if (条件1) {
    処理1;
} else if (条件2) {
    処理2;
} else {
    処理3;
}

例:

C
int score = 75;

if (score >= 90) {
    printf("優\n");
} else if (score >= 70) {
    printf("良\n");
} else {
    printf("可\n");
}

注意点①:条件式は0が偽、それ以外が真

C言語では、

  • 0 → 偽(false)
  • 0以外 → 真(true)

として扱われます。

C
if (0) {
    // 実行されない
}

if (1) {
    // 実行される
}

注意点②:= と == の違い

C
if (a = 5)  // ←代入(バグの原因)
if (a == 5) // ←比較(正しい)

これは初心者が最もやりがちなミスです。


初心者さん

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

エンジニアくん

それ、“=”と“==”間違えてるパターンだね。現場でも普通に起きるやつ


注意点③:波括弧を省略できるが非推奨

C
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言語の基本文法をこちらの記事で整理しています。

技術に関するご相談・開発・自動化ツール作成・記事執筆などのご依頼も承っています。

小さなご相談からでもお気軽にご連絡ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

組み込みソフトエンジニアとして働きながら、
C言語・メモリ・ポインタなどの基礎から実務まで解説しています。

副業・キャリアについても実体験ベースで発信中です。

X(旧Twitter)でも発信しています
👉 Xはこちら

▼まずはここから読むのがおすすめ
C言語文法シリーズ
メモリ領域解説シリーズ

コメント

コメントする


目次