C言語入門 プログラミング

switch 文

switch 文

制御構文2つ目は、switch 文です。
switch 文とは、前回の if 文に引き続き条件分岐の構文になります。

複数の条件分岐を行う際、if 文では if〜 else を使用して、以下のように書く必要がありました。

int x = 100;
if( x == 0 )
{
    printf( "x は 0" );
}
else if( x == 100 )
{
    printf( "x は 100" );
}
else if( x == 200 )
{
    printf( "x は 200" );
}

しかし、 switch 文を使うことで、これを以下のように書くことができます。

int x = 100;
switch( x )
{
    case 0:
        printf( "x は 0" );
        break;
    case 100:
        printf( "x は 100" );
        break;
    case 200:
        printf( "x は 200" );
        break;

}

非常にすっきりしたコードになったと思います。
目安としては、条件分岐が 3つ以上になるときは、switch 文を使うのが良いです。

ココがポイント

複数の条件分岐には switch 文を使うことができる

一点注意点があるのですが、switch 文では case に一致する場合、break するまで処理が走ってしまいます。

例えば以下のコードで、break を一箇所コメントアウトしてみました。
実行結果を確かめてみましょう。

switch( x )
{
    case 0:
        printf( "x は 0" );
        break;
    case 100:
        printf( "x は 100" );
        //break;  // <- break を忘れると...
    case 200:
        printf( "x は 200" );
        break;

}

break 忘れは非常にありがちなバグですので、気をつけましょう。

ココがポイント

break 忘れに注意!

default

if 文では一致しない場合を else で分岐することができました。
switch 文では、いずれの case にも一致しない場合を、 default で分岐することができます。

switch( x )
{
    case 0:
        printf( "x は 0" );
        break;
    case 100:
        printf( "x は 100" );
        break;
    case 200:
        printf( "x は 200" );
        break;
    default:
        printf( "どれにもあてはまらない" );
        break;


}

のような感じです。

ココがポイント

「その他」は default で分岐できる。

  • この記事を書いた人

GOTH

鹿児島県出身,吉祥寺在住の27歳.職業はゲーム会社でプログラマー.趣味はバイク,車,キャンプ,ガジェット,読書,そしてゲーム開発. サイトのテーマはプログラミングとガジェットでライフハック.たまに趣味に関する雑感や記録を残していく備忘録.ツイッターもやってます.
自己紹介
お問い合わせ

-C言語入門, プログラミング