C言語

場合分けの処理~else、else if編~

if文は、条件が真の場合に特定の処理を行っていましたが、条件が偽の場合に、特定の処理を行いたいなど、場合分けして処理をさせたい場合は、どうすればよいでしょうか。
それには、if文と一緒に使う構文があります。これが、else文、else if文です。
また、それ以外に場合分けを行う方法として、「この番号のときは、この処理を行いたい」など、番号毎で処理を変えたい場合は、switch文という構文があります。
今回は、else文、else if文、switch文について学びます。

else文の使い方

else文を使う場合の構文は次のようになります。

構文

if( 条件式 )
{
条件式が真の処理 ;
}
else
{
条件式が偽の処理 ;
}

if文の条件式が真の場合は、前回学んだif文と同様に、if文の下の真の処理のみ実行されます。
偽の場合は、if文の下の真の処理は実行されず、else文の下の偽の処理が実行されます。
この構文ですが、真、偽の処理が1文のみの場合は、ブロック( { } )を省略できますが、読みにくいため、おすすめはしません。

else文のサンプルプログラムを次に示します。

#include <stdio.h>

int main(void)
{
    int number;

    scanf("%d", &number);

    if( number == 1 )
    {
        printf("1を入力しました。¥n");
    }
    else
    {
        printf("1以外を入力しました。¥n");
    }
    printf("終了します。");
    return 0;
}

サンプルプログラムを実行し、1を入力した場合、1以外を入力した場合の結果を次に示します。

実行結果

1        ←入力したデータ
1を入力しました。
終了します。

実行結果

2        ←入力したデータ
1以外を入力しました。
終了します。

1を入力した場合は、9行目のif文の条件式が真となり、if文の下の文が実行され、else文の下の文は実行されないことがわかります。
2を入力した場合は、9行目のif文の条件式が偽となり、if文の下の文は実行されず、else文の下の文が実行されることがわかります。
また、17行目は、if文、else文の後のため、ともに実行されていることがわかります。

else if文の使い方

if文では、2つ以上の条件を判断させて処理することができます。
条件が偽の場合、更に、条件に応じて処理をさせたい場合などに使用することができます。
else if文を使う場合の構文は次のようになります。

構文

if( 条件式1 ) {
真1の処理 ;
} else if ( 条件式2 ) {
真2の処理 ;
} else {
偽の処理 ;
}

この構文では、条件式1が真の場合は、真1の処理のみ行われ、条件式1が偽で、かつ、条件式2が真の時は、真2の処理のみ行われます。
条件式1も条件式2も満たさない場合は、偽の処理が行われます。
また、最後のelseの処理がなければ、省略しても問題ありません。
ただし、実務では、何も処理がなくても明示的にelseは記述することもあります。
これは、例外的や異常処理などの考慮がされず、elseの処理がなかったことにより、バグが発生することがあるため、意識して記述することによりバグを作り込まないようにする目的があるようです。
この場合、意図的であることが分かるように処理がないことをコメントを記述しておくと親切です。

また、else if 文は複数記述することができ、複数の条件に応じた処理を行うことができます。

次にif~else if~else文のサンプルプログラムを示します。

#include <stdio.h>

int main(void)
{
    int number;

    scanf("%d", &number);

    if( number >= 5 )
    {
        printf("5以上を入力しました。¥n");
    }
    else if( number >= 4 )
    {
        printf("4を入力しました。¥n");
    }
    else
    {
        printf("4未満を入力しました。¥n");
    }
    printf("終了します。");
    return 0;
}

プログラムを実行し、5を入力した場合、4を入力した場合、3を入力した場合の実行結果は、次のようになります。

実行結果

5       ←入力したデータ
5以上を入力しました。
終了します。

実行結果

4       ←入力したデータ
4を入力しました。
終了します。

実行結果

3       ←入力したデータ
4未満を入力しました。
終了します。

5を入力した場合は、9行目のif文が真となり、直後の文が実行されます。そのあとの13行目のif文の条件も真ですが、1つ目のif文が真になると、そのあとのelse if文の判定は行われないので、実行されません。
4を入力した場合は、9行目のif文が偽となり、次の13行目のelse if文の判定が行われます。判定結果が真のため、else if文の直後の文が実行されます。
3を入力した場合、if文もelse if文も条件を満たさないため、else文が実行されます。

以上が、C言語のelse if、elseの使い方についてでした。

else if文もelse文もブロック内は、複数の処理を記述できます。

次にswitch文についてですが、長くなってしまったため、次のページで説明します。

場合分けの処理~switch編~

-C言語