本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。
第5回 | C言語のif文と条件分岐を学ぶ:条件によって処理を変える| UNIX Cafe

はじめての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 ~/Desktop2. コンパイルする
clang if_sample.c -o if_sample3. 実行する
./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 で遊んでみる:扉を開ける条件を探そう
ここまでの例では、点数や年齢を使って条件分岐を確認してきました。次は、少しだけパズルのように考えてみましょう。
次のプログラムでは、変数 key の値が 7 のときだけ扉が開きます。今回は if 文に集中するため、キーボード入力は使わず、プログラム内の値を書き換えて結果を確認します。
#include <stdio.h>
int main(void) {
int key = 7;
if (key == 7) {
printf("door open\n");
} else {
printf("door locked\n");
}
return 0;
}実行結果:
door openkey の値を 3 や 10 に変えると、実行結果は次のように変わります。
door lockedポイントは、次の条件です。
if (key == 7)これは「key が 7 と等しいなら」という意味です。key が 7 なら条件は真になり、door open が表示されます。key が 7 以外なら条件は偽になり、else 側の door locked が表示されます。
条件を変えて遊んでみよう
サンプルが動いたら、条件式を少しだけ変えてみましょう。
key == 7をkey == 3に変えると、どの値で扉が開くかkey == 7をkey >= 5に変えると、どの値から扉が開くかkey == 7をkey != 0に変えると、0 のときだけ何が起きるか
プログラムは、正解を暗記するだけではなく、条件を変えて、コンパイルして、実行して、結果を見る。この小さな実験を繰り返すと、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;
}実行結果:
minorage を 20 や 25 に変えて結果の違いを確認すると理解しやすくなります。
まとめ
今回のポイントは次のとおりです。
if文を使うと条件によって処理を変えられる- 比較演算子で条件式を書く
elseを使うと、条件が偽のときの処理も書けるelse ifを使うと、条件を複数に分けて判定できる- 変数の値や条件式を変えると、プログラムの結果も変わる
=と==は意味がまったく異なる
この回では、C言語で条件分岐を行う if 文を確認しました。
変数、演算子、条件分岐がそろうと、プログラムらしい処理を書けるようになります。
次回予告
次回は、for 文を使った繰り返し処理に進みます。
同じ処理をまとめて実行する考え方を、条件分岐の理解とつなげながら、やさしく見ていきましょう。
復習してみよう
復習したい方は、こちらもあわせてご覧ください。













