第5回|C言語のif文と条件分岐を学ぶ:条件によって処理を変える

* 当サイトでは、コンテンツの一部に広告を掲載しています。

System Note $ cat /proc/ai-disclosure

本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。

第5回|C言語のif文と条件分岐を学ぶ:条件によって処理を変える

はじめてのC言語 | 第5回

目次

はじめに

前回は、C言語で整数の計算を行う方法を確認しました。
今回は、条件によって処理を分ける if 文を学びます。

この回の目的は次の4点です。

  • if 文の基本形を理解する
  • 比較演算子の意味を覚える
  • if と else の使い方を知る
  • 条件式が真か偽かで処理が変わることを確認する

条件分岐とは何か

条件分岐とは、「ある条件が成り立つかどうか」で実行する処理を変えることです。

たとえば、次のような場面で使います。

  • 点数が60点以上なら合格と表示する
  • 年齢が20以上なら成人と表示する
  • 値が0なら特別な処理を行う

C言語では、この処理を if 文で書きます。

if 文の基本形

最小の形

if (条件式) {
    実行する処理;
}

意味は次のとおりです。

  • 条件式 が真なら、波かっこの中を実行する
  • 偽なら、波かっこの中は実行しない

最初のサンプルコード

ソースコード

if_sample.c という名前で保存します。

#include <stdio.h>

int main(void) {
    int score = 75;

    if (score >= 60) {
        printf("pass\n");
    }

    return 0;
}

実行手順

1. 作業ディレクトリに移動する

cd ~/Desktop

2. コンパイルする

clang if_sample.c -o if_sample

3. 実行する

./if_sample

実行結果:

pass

コードの読み方

int score = 75;

整数型の変数 score に 75 を代入しています。

if (score >= 60)

score が 60 以上なら条件は真です。
この場合、75 >= 60 なので真になります。

printf(“pass\n”);

条件が真なので、この行が実行されます。

比較演算子

if 文では、比較演算子を使って条件式を書きます。

  • == : 等しい
  • != : 等しくない
  • > : より大きい
  • < : より小さい
  • >= : 以上
  • <= : 以下

よく使う例

等しいかを調べる

if (x == 10) {
    printf("x is 10\n");
}

等しくないかを調べる

if (x != 0) {
    printf("x is not 0\n");
}

以上かを調べる

if (score >= 60) {
    printf("pass\n");
}

if と else

条件が真のときだけでなく、偽のときの処理も書きたい場合は else を使います。

サンプルコード

#include <stdio.h>

int main(void) {
    int score = 45;

    if (score >= 60) {
        printf("pass\n");
    } else {
        printf("fail\n");
    }

    return 0;
}

実行結果:

fail

意味は次のとおりです。

  • score >= 60 が真なら pass
  • そうでなければ fail

if と else if

条件を2つ以上に分けたい場合は else if を使います。

サンプルコード

#include <stdio.h>

int main(void) {
    int score = 75;

    if (score >= 80) {
        printf("A\n");
    } else if (score >= 60) {
        printf("B\n");
    } else {
        printf("C\n");
    }

    return 0;
}

実行結果:

B

このコードは上から順に判定されます。

  • score >= 80 は偽
  • score >= 60 は真
  • したがって B を表示する

条件式は真か偽で決まる

C言語の if 文は、条件式を評価した結果が真なら実行し、偽なら実行しません。

この段階では、比較演算子を使った式が真か偽になると理解すれば十分です。

初心者がつまずきやすい点

= と == を混同しない

これは非常に重要です。

  • = : 代入
  • == : 比較

正しい例:

if (score == 100) {
    printf("perfect\n");
}

誤りの例:

if (score = 100) {
    printf("perfect\n");
}

score = 100 は比較ではなく代入です。
意図しない動作の原因になるため、必ず == を使います。

条件式は丸かっこで囲む

if の後には丸かっこが必要です。

正しい例:

if (score >= 60) {
    printf("pass\n");
}

波かっこを省略しない方がよい

1行だけなら波かっこを省略できる場合もありますが、初学者は必ず書く方が安全です。

if (score >= 60) {
    printf("pass\n");
}

この形に統一すると、読みやすくなり、ミスを減らせます。

よくあるエラー

expected expression

原因: if の条件式が正しく書かれていません。

誤った例:

if () {
    printf("test\n");
}

対処: 丸かっこの中に条件式を書く必要があります。

expected ‘;’

printf などの文の末尾に ; が必要です。

printf("pass\n")

比較演算子の書き間違い

=> や =< ではありません。
正しくは次のどちらかです。

  • >=
  • <=

練習用コード

次のコードを書いて実行してください。

#include <stdio.h>

int main(void) {
    int age = 18;

    if (age >= 20) {
        printf("adult\n");
    } else {
        printf("minor\n");
    }

    return 0;
}

実行結果:

minor

age を 20 や 25 に変えて結果の違いを確認すると理解しやすくなります。

まとめ

今回のポイントは次のとおりです。

  • if 文を使うと条件によって処理を変えられる
  • 比較演算子で条件式を書く
  • else を使うと、条件が偽のときの処理も書ける
  • else if を使うと、条件を複数に分けて判定できる
  • = と == は意味がまったく異なる

この回では、C言語で条件分岐を行う if 文を確認しました。
変数、演算子、条件分岐がそろうと、プログラムらしい処理を書けるようになります。

次回予告

次回は、for 文を使った繰り返し処理に進みます。
同じ処理をまとめて実行する考え方を、条件分岐の理解とつなげながら、やさしく見ていきましょう。

復習してみよう

復習したい方は、こちらもあわせてご覧ください。

用途ごとに選ぶ C言語のおすすめ本

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

この記事を書いた人

のいのアバター のい UNIX Cafe マスター

Macintosh Color Classicから始まった旅は、長いWindows時代を経て、Windows10のサポート終了をきっかけにUNIXの世界へ戻ってきました。UNIX Cafeでは、UNIX・Linux・そしてMacな世界を、むずかしい言葉を使わず、物語のように書いています。プログラミングは、アイデアをコンピューターに伝えるための言葉です。簡単な単語と文法を覚えれば、誰でもコマンドを使えます。ぜひ一度、やさしいプログラミングの世界をのぞいてみてください。

Created by UNIX Cafe

目次