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 で分岐できる。