C言語 条件文if ~ else if ~ elseの使い方

  • このエントリーをはてなブックマークに追加
Pocket

C言語に限らず、プログラムを記述していくうえで、「こういうとき、こういう処理をさせ、そうでないとき、こういう処理をさせる。」というように分岐が必要になる場面は当然のようにあります。逆に分岐がないプログラムは練習問題以外にないのではないでしょうか?

ここでは、条件文if ~ else if ~ elseの使い方について解説していきます。

C言語 条件文if文の記述の仕方

まず、if文の構成を示します。

    if (条件1) {
        条件1が成立したときの処理
    } else if (条件2) {
        条件1が不成立で条件2が成立したときの処理
    } else if (条件3) {
        条件1、条件2がともに不成立で条件3が成立したときの処理
    } else {
        条件1、条件2、条件3のすべてが不成立だった時の処理
    }

このようになります。else ifの部分は、もっと追加できますし、全くなくてもいいです。また、elseの部分もなくても構いません。

しかし、else文はなるべく書くようにしましょう。条件を満たしているときに何か変数に値を設定しているような場合、条件を満たさなかったら、その変数に何も設定されずに不定な値のまま、次の処理に移り、次の処理でその変数を使っていたら、プログラムがどのように作用するか予想できなくなってしまうからです。

if文で条件を満たした場合、その条件成立時の処理を実行したあと、それ以降のelse if文やelse文の評価はされずに、次の処理に移行することも覚えておいてください。

C言語のif文の条件の書き方

if文の構成は、理解いただけたと思います。今度は条件文の書き方について解説していきます。

まず、比較する記号は以下の通りです。

記号 意味
== 等しい
!= 異なっている
> 左辺のほうが大きい
< 左辺のほうが小さい
>=, => 左辺が右辺以上
<=, =< 左辺が右辺以下

気を付けていただきたいのは、「等しい」と条件文を記述するときは「==」と「=」が2ついる点です。1つだけにしてしまうと、代入文になってしまい、意図した動作になりませんので、注意が必要です。こちらの記事も読んでみてください。

C言語 if文の「=」忘れは致命的になる

それでは、実際に書いてみましょう。

#inclue <stdio.h>

void main(void)
{
    short a, b;

    printf("a = ");
    scanf("%d", &a);

    printf("b = ");
    scanf("%d", &b);

    if (a == b) {
        printf("aとbは同じ値です。\n");
    } else if (a < b) {
        printf("aはbより小さい値です。\n");
  } else if (a > b) {
        printf("aはbより大きい値です。\n");
    } else {
        printf("ここの処理は通りません。\n");
    }
}

「aはbより大きい」は、わざとelse if文で書いてみました。本来なら、else文で
済みます。aとbが等しいことと、aはbより小さいことが判定済みなので、それ以外はaはbより大きいということになりますからね。

今回は練習なので、記述してみました。これ以外に出てきていない条件でも記述して、コンパイル、実行してみてください。

C言語のif文で複数の条件の書き方

if文の条件で複数個の条件が成立したときに、実行させたい処理がある場合の条件文の書き方について解説していきます。

Aという条件とBという条件が両方とも成立したとき(AND条件)の書き方は

A && B

と「&&」を2個続けて記述します。

今度は、Aという条件とBという条件のどちらか一方が成立したとき(OR条件)の書き方は

A || B

と「||」を2個続けて記述します。ここも「&」や「|」が1つだと意味が違うので注意してください。

具体的に記述してみましょう。

#inclue <stdio.h>

void main(void)
{
    short a, b, c;

    printf("a = ");
    scanf("%d", &a);

    printf("b = ");
    scanf("%d", &b);

    printf("c = ");
    scanf("%d", &c);

    if ((a == b) && (a != c)) {
        printf("aとbは同じ値ですが、aとcは違う値です。\n");
    } else if ((a <= b) || (b >= c)) {
        printf("aはb以下の値かbはc以上の値です。\n");
    } else {
        printf("条件を満たしませんでした。\n");
    }
}

あまり意味のないプログラムになってしまっていますが、練習なので、いろんなa,b,cを入力して、条件文の処理の仕方を学んでいただけたらと思います。

まとめ

if ~ else if ~ else文の書き方の説明をしました。
プログラムを作っていくには、必ず必要なスキルですので、必ずマスターしてください。

また、ここでは説明しませんでしたが、if文の中にif文やfor文のなかにif文など、あらゆる場面で使われます。ここで解説した内容は少なくとも身につけていただき、次のステップアップをしてほしいと思います。

  • このエントリーをはてなブックマークに追加

コメントを残す

*