C言語 if文の使い方

この記事のポイント

  • C言語プログラミングにおける条件分岐の考え方     
  • if文やif-else文による条件分岐と基本構文     
  • 複数条件の組み合わせによる柔軟な分岐処理の実現
  • 入れ子構造による複雑な条件分岐の実装    

目次

C言語のif文とは?

C言語のif文は、条件に応じてプログラムの流れを制御するための基本構文です。プログラムにおいて、「もし〜ならば〜を実行する」という論理的な判断を実装する目的で使う構文になります。

私たちの実生活で当たり前に行われている「もし雨が降っているならば傘を持っていく」というような日常的な判断こそ、if文の考え方になります。コンピュータにこのような判断をさせるための仕組みが、if文だということです。     

if文は、真偽値(true/false)を評価する条件式と、その条件が真の場合に実行される処理ブロックで構成されます。条件が偽の場合、その処理ブロックがスキップされる形です。また、条件が偽の場合に別の処理を行いたい場合は、else文を組み合わせることも可能となります。

また、複数の条件を連続して評価したい場合は、else if文を使用します。プログラム内でelse if文を使うと、より複雑な条件分岐が実現できるでしょう。else if文によって状況に応じた異なる動作が可能になると、より柔軟で高度な処理が実現しやすくなります。

if文は、プログラムの流れを制御する基本中の基本です。C言語だけでなく、ほぼすべてのプログラミング言語に存在する重要な概念となります。複雑なプログラミングの基礎を身につけるためには、まずif文の基本を押さえることが大切でしょう。

【関連】
C言語をもっと詳しく学ぶならpaizaラーニング

基本構文

C言語におけるif文の基本構文は、とてもシンプルです。最も基本的な形式は、以下のコード例になります。

if (条件式) { // 条件が真の場合に実行される処理 }

上記のコード例では、条件が真(non-zero)の場合にのみ、中括弧内の処理が実行されます。また、条件が偽の場合に別の処理を実行したい場合は、else文を追加するとよいでしょう。

if (条件式) { // 条件が真の場合に実行される処理 } else { // 条件が偽の場合に実行される処理 }

さらに、複数の条件を順番に評価したい場合は、else if文を使います。

if (条件式1) { // 条件1が真の場合の処理 } else if (条件式2) { // 条件1が偽で条件2が真の場合の処理 } else { // すべての条件が偽の場合の処理 }

実用例

ここからは、実際の使用例を通してif文のさまざまな使い方を見ていきましょう。

if文は、プログラムにおいて非常に重要な役割を果たす基本構文です。このセクションでは、基本的な使い方から始まり、複雑な条件分岐、論理演算子の活用、入れ子構造のif文まで、実践的なコード例を交えて解説します。

「どのような条件で何が起きるのか?」を明確に示したコード例と、出力結果を確認すると、if文を使ったときの動きが視覚的に理解できるようになるはずです。

それでは、具体的なコード例を通じて、if文の真の力とその応用方法を学んでいきましょう。

基本的なif文

最も単純なif文では、条件が真の場合にのみブロック内の処理を実行します。以下のコード例では、変数に格納された年齢が特定の値以上かどうかを判断し、条件が満たされた場合にのみメッセージを表示します。とてもシンプルですが、プログラミングにおける条件分岐の基本となる構造です。

#include <stdio.h> int main() { int age = 15; if (age >= 18) { printf("イヌは成犬です\n"); } printf("処理を終了します\n"); return 0; }

出力結果:

処理を終了します

if-else文による条件分岐

if-else文は、条件が真の場合と偽の場合で異なる処理を行うための基本構造です。以下のコード例では、気温の正負によってネコの状態を判断し、適切なメッセージを表示します。if-else文は、二者択一の状況で特に有用な構文です。if-else文を使うことで、プログラムの流れを明確に分岐できます。

#include <stdio.h> int main() { int temperature = -5; if (temperature >= 0) { printf("ネコは暖かい場所で寝ています\n"); } else { printf("ネコは寒さに震えています\n"); } return 0; }

出力結果:

ネコは寒さに震えています

複数条件の判定

else if文は、複数の条件を順次評価する際に使う構文です。以下のコード例では、試験の点数に応じて異なる評価を行います。条件は上から順に評価され、最初に真となった条件のブロックだけが実行される形です 。これにより、複数の可能性から適切な処理を選択できます。

#include <stdio.h> int main() { int score = 75; if (score >= 90) { printf("ウサギは大喜びしています!\n"); } else if (score >= 70) { printf("ウサギは満足しています\n"); } else if (score >= 50) { printf("ウサギは少し悲しそうです\n"); } else { printf("ウサギは落ち込んでいます\n"); } return 0; }

出力結果:

ウサギは満足しています

論理演算子を使った複合条件

論理演算子(&&: AND、||: OR、!: NOT)は、複数の条件を組み合わせる際に使うものです。以下のコード例では、年齢と身長の両方の条件を満たすかどうかを判定します。論理演算子を使うことで、複数の条件を一つの式にまとめることが可能です。複雑な判断基準を簡潔に表現できます。

#include <stdio.h> int main() { int age = 12; int height = 140; if (age >= 10 && height >= 130) { printf("キリンに乗ることができます\n"); } else { printf("キリンに乗ることはできません\n"); } return 0; }

出力結果:

キリンに乗ることができます

入れ子(ネスト)構造のif文

if文のなかに別のif文を入れるネスト構造は、複数条件が階層的に関連する場合に有効です。以下のコード例では、天気と時間帯に応じた行動を決定します。このように条件を階層化すると、より詳細で複雑な条件分岐が表現できるようになります。

#include <stdio.h> int main() { int is_raining = 1; // 1:雨、0:晴れ int time = 14; // 時間(24時間表記) if (is_raining) { if (time < 12) { printf("ゾウは室内で朝食をとっています\n"); } else { printf("ゾウは室内で過ごしています\n"); } } else { printf("ゾウは外で遊んでいます\n"); } return 0; }

出力結果:

ゾウは室内で過ごしています

条件演算子(三項演算子)

条件演算子(三項演算子)は、if-else文を一行で簡潔に表現できる方法です。以下のコード例では、数値の偶数・奇数を判定しています。式の形式は「条件 ? 真の場合の値 : 偽の場合の値」となり、単純な条件分岐を非常にコンパクトに記述できるところが利点です。短い判断処理に適しています。

#include <stdio.h> int main() { int number = 7; // 条件 ? 真の場合の値 : 偽の場合の値 printf("%sは%sです\n", "パンダ", number % 2 == 0 ? "偶数" : "奇数"); return 0; }

出力結果:

パンダは奇数です

switch文との使い分け

同じ変数の値によって多分岐する場合、if-else ifの代わりにswitch文が使います。以下のコード例では、動物の番号に応じたメッセージを表示します。switch文は値が決まった範囲内で分岐する場合に適した構文です。必要に応じてswitchを使うことで、コードの可読性が向上します。

#include <stdio.h> int main() { int animal = 2; // 動物の種類を表す番号 if (animal == 1) { printf("選んだ動物:イヌ\n"); } else if (animal == 2) { printf("選んだ動物:ネコ\n"); } else if (animal == 3) { printf("選んだ動物:ウサギ\n"); } else { printf("不明な動物です\n"); } return 0; }

出力結果:

選んだ動物:ネコ

実際のアプリケーション例

実際のアプリケーション開発をするなかでは、複数の条件を組み合せたより複雑な判断が必要です。以下のコード例では、動物の種類・状態・時間に基づく適切なメッセージを表示します。複数要素を考慮した条件分岐は、実際のプログラミングでよく使われる重要なテクニックです。

#include <stdio.h> int main() { int is_hungry = 1; // 1:空腹、0:満腹 int time = 18; // 時間(24時間表記) if (is_hungry) { if (time >= 18 || time < 6) { printf("ペットが夜に空腹です!エサをあげてください\n"); } else { printf("ペットが空腹です\n"); } } else { printf("ペットは満腹です\n"); } return 0; }

出力結果:

ペットが夜に空腹です!エサをあげてください

まとめ

この記事では、C言語の基本的なif文から複合条件、入れ子構造のif文、条件演算子、switch文との比較について、条件分岐の幅広い使い方を紹介しました。より効果的なプログラムを作成するためには、条件分岐の理解・活用が重要となります。

C言語のif文は、プログラムの流れを制御するうえでとても役立つ強力ツールです。条件分岐は、プログラミングの中核をなす概念でもあります。プログラミングで適切な条件構造を選択すると、コードの可読性・柔軟性・保守性も向上するでしょう。

if文のシンプルな構文を確実に理解し活用することが、あなたのプログラミングスキルを高めることにつながります。

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaラーニングトップ
  2. リファレンス
  3. C言語のリファレンス記事一覧
  4. C言語 if文の使い方