【独学C言語】switch文(条件分岐)

※この記事は「2020年12月5日」に更新しました。

今回は、switch文の条件分岐について。

前回、if文(else、else if など)の条件分岐を紹介しました。

【独学C言語】if文(elseなど、条件分岐)

【独学C言語】if文(elseなど、条件分岐)

2020年4月15日

しかし、分岐の数が増えてくると switch文の方がすっきりコーディングできる場合があります。

switch文とは

switch文は、多分岐処理を行うときに利用する制御文です。

変数の値に対して、処理を分けるときに便利です。

switch文の書き方

switch文の書き方です。

switch(値)
{
    case 定数1:
        処理;
        break;
    case 定数2:
        処理;
        break;
    …
    default:
        処理;
        break;
}

:(コロン)と ;(セミコロン)が混ざっているので注意してください。

値が定数1と同じであれば、case 定数1 以下の処理が行われます(break で switch から抜けます)。

値が定数2と同じであれば、case 定数2 以下の処理が行われます(break で switch から抜けます)。

case に記述されている定数と同じ値が見つからなければ、default 以下の処理が行われます(break で switch から抜けます)。

switch文は範囲指定ができないので注意

switch文は、範囲指定ができないので、注意しましょう。

switch(number)
{
    case number > 1:    /* このような指定はできない。 */
    …
}

サンプルプログラム【C言語】

switch文を理解するためのサンプルプログラムです。

sample1.c というソースファイルを作成します。

#include <stdio.h>

int main(void)
{
    int number;    /* 曜日を表す数値 */

    printf("\n");
    printf("Input number : ");    /* 数値を入力する */
    scanf("%d", &number);

    printf("\n");

    switch(number)
    {
        case 0:    /* 日曜日 */
            printf("Sunday.\n");
            break;
        case 1:    /* 月曜日 */
            printf("Monday.\n");
            break;
        case 2:    /* 火曜日 */
            printf("Tuesday.\n");
            break;
        case 3:    /* 水曜日 */
            printf("Wednesday.\n");
            break;
        case 4:    /* 木曜日 */
            printf("Thursday.\n");
            break;
        case 5:    /* 金曜日 */
            printf("Friday.\n");
            break;
        case 6:    /* 土曜日 */
            printf("Suturday.\n");
            break;
        default:    /* それ以外 */
            printf("Please Input 0-6.\n");
            break;
    }

    printf("\n");

    return 0;
}

このサンプルプログラムは、数値を入力させて、0~6 であれば、日曜日~土曜日まで対応する曜日を表示させます。

0~6 以外の値が入力された場合は、エラーメッセージを表示させています。

実行結果は以下の通りです。

switch文(条件分岐)

次にあえて、switch文を使用しないで同じ内容のものをコーディングしてみます。

sample2.c というソースファイルを作成します。

#include <stdio.h>

int main(void)
{
    int number;    /* 曜日を表す数値 */

    printf("\n");
    printf("Input number : ");    /* 数値を入力する */
    scanf("%d", &number);

    printf("\n");

    if(number == 0)    /* 日曜日 */
    {
        printf("Sunday.\n");
    }
    else if(number == 1)    /* 月曜日 */
    {
        printf("Monday.\n");
    }
    else if(number == 2)    /* 火曜日 */
    {
        printf("Tuesday.");
    }
    else if(number == 3)    /* 水曜日 */
    {
        printf("Wednesday.\n");
    }
    else if(number == 4)    /* 木曜日 */
    {
        printf("Thursday.\n");
    }
    else if(number == 5)    /* 金曜日 */
    {
        printf("Friday.\n");
    }
    else if(number == 6)    /* 土曜日 */
    {
        printf("Suturday.\n");
    }
    else
    {
        printf("Please Input 0-6.\n");
    }

    printf("\n");

    return 0;
}

if文(else if、else)を使っても書くことはできます。

しかし、先程の switch文の方がわかりやすかったのではないでしょうか?

独学C言語の記事について【おまけ】

タカフミブログの独学C言語シリーズは、C言語を独学するということを目的に記事を書いています。

他の記事に興味がある方は以下をご参照下さい。

C言語に関する記事一覧

C言語は、古典的なイメージがある方もいるかもしれませんが、他の多くのプログラミング言語のベースになっています。

実際に本格的なソフトを開発するとなるとなかなか大変ですが、とにかくハードウェアのリソースが少なくても高速に動くのが最大のメリットです。

プログラマーや SE(システムエンジニア)を目指す方は一度お試し下さい。

最後に【switch文(条件分岐)】

いかがでしょうか。

次回は、while文(繰り返し処理)について、解説します。

【独学C言語】while文(繰り返し処理)

【独学C言語】while文(繰り返し処理)

2020年4月19日

今回は、switch文(条件分岐)の紹介でした。

分岐の数や条件によって、if(else if、else)を使うのか、switch を使うのか、判断すると良いかと思います。