switch文

 ここまで、条件分岐のためのif文の書き方ならびに条件の書き方、演算子の使い方について説明しました。実は、条件分岐の書き方にはif文以外にもあるのです。今回は、if文以外の条件分岐としてswitch文について解説していきます。

 switch文は、if文で全て書くことも出来ますが、「余りが0のとき」「余りが1のとき」「余りが2のとき」「余りが…(以下省略)…」のように同じ変数の比較で条件が沢山ある場合は、switch文で書いていった方が楽でわかりやすいです。

 以下のプログラムを書いて実行してみて下さい。

#include <stdio.h>

int main(int argc, const char * argv[])
{
    
    // insert code here...
    printf("最初の処理\n");
    
    int a = 3;
    int b = a % 3;
    
    switch (b) {
        case 0:     // b(aを3で割った余り)が0のとき
            printf("aを3で割った余りは0\n");
            break;
        case 1:     // b(aを3で割った余り)が1のとき
            printf("aを3で割った余りは1\n");
            break;
        case 2:     // b(aを3で割った余り)が2のとき
            printf("aを3で割った余りは2\n");
            break;
        default:
            break;
    }
    
    printf("最後の処理\n");
    
    return 0;
}

 変数aの中身は「3」なので、実行して表示される結果としては、

最初の処理
aを3で割った余りは0
最後の処理

 と表示されます。switch()の括弧の中には比較のための変数を入れます。その変数の中身が0のときには「case 0」の部分が、1のときには「case 1」の部分が、2のときには「case 2」の部分が実行されます。尚、今回のプログラムでは実行されませんが、「それ以外の値を取る場合」は「default」の部分が実行されます。

 これをif文で書き直すと、以下のようになります。

    if(b == 0) {
        printf("aを3で割った余りは0\n");
    } else if(b == 1) {
        printf("aを3で割った余りは1\n");
    } else if (b == 2) {
        printf("aを3で割った余りは2\n");
    } else {
        
    }

 注意:各caseの中の最後にある「break;」は、そこで処理を抜けるという意味です。この「break;」を書き忘れると、その下のcaseの中までもが実行されてしまうので注意して下さい。試しに、上のプログラムで「break;」を消すかコメント化したものを実行して確認してみて下さい。

■スポンサーリンク

このページの先頭へ