C言語のswitch文とは?基本構文から使い方まで徹底解説
C言語におけるswitch文の基本
switch文は、ある変数の値を複数の値のリストと照らし合わせて等しいかどうかを判定するための制御構造です。リスト内のそれぞれの値は「ケース(case)」と呼ばれ、switch文で判定対象となる変数は、各ケースと順番に比較されます。
if文を多用すると条件分岐が複雑になりがちですが、switch文を使うことで、特定の値に応じた分岐処理をすっきりと記述できます。
switch文の基本構文
C言語におけるswitch文の構文は以下のとおりです。
switch(expression) {
case constant-expression :
statement(s);
break; /* 省略可能 */
case constant-expression :
statement(s);
break; /* 省略可能 */
/* case文はいくつでも記述可能 */
default : /* 省略可能 */
statement(s);
}switch文のルール
switch文を使用する際には、以下のルールに従う必要があります。
switch文で使用する式(expression)は、整数型または列挙型である必要があります。また、整数型や列挙型への単一の変換関数を持つクラス型も使用できます。
switch文の中には、任意の数のcase文を記述できます。各caseの後には、比較対象となる値とコロン(:)を続けます。
各caseの定数式(constant-expression)は、switch内の変数と同じデータ型である必要があり、かつ定数またはリテラルでなければなりません。
判定対象の変数がいずれかのcaseの値と一致すると、そのcaseに続くステートメントが、break文に到達するまで実行されます。
break文に到達するとswitch文は終了し、制御の流れはswitch文の次の行へ移ります。
すべてのcaseにbreak文が必要なわけではありません。break文がない場合、制御の流れはbreakに到達するまで、後続のcaseへとそのまま流れ落ちます(フォールスルー)。
switch文には省略可能なdefaultケースを設けることができます。defaultケースはswitch文の末尾に配置する必要があり、どのcaseにも該当しなかった場合に実行する処理を記述します。defaultケースではbreak文は不要です。
サンプルコード
ここでは、成績(グレード)に応じてメッセージを出力するswitch文の例を紹介します。
#include <stdio.h>
int main () {
/* ローカル変数の定義 */
char grade = 'B';
switch(grade) {
case 'A' :
printf("Excellent!
" );
break;
case 'B' :
case 'C' :
printf("Well done
" );
break;
case 'D' :
printf("You passed
" );
break;
case 'F' :
printf("Better try again
" );
break;
default :
printf("Invalid grade
" );
}
printf("Your grade is %c
", grade );
return 0;
}この例では、変数gradeが'B'であるため、case 'B'に一致します。なお、case 'B'とcase 'C'の間にbreak文がないため、両方のケースで同じ処理(「Well done」の出力)が実行される点に注目してください。これは、複数の値に対して同一の処理を行いたい場合によく使われるテクニックです。
実行結果
Well done Your grade is B
まとめ
switch文は、1つの変数の値に応じて複数の処理に分岐させたい場合に非常に便利な構文です。break文によるフォールスルーの挙動やdefaultケースの使い方を正しく理解することで、可読性の高いコードを書くことができます。条件が多い分岐処理では、if-else文の連続よりもswitch文の方が処理の意図が明確になり、パフォーマンス面でも有利な場合があります。
-
C言語のswitch文とは?基本構文・アルゴリズム・サンプルコードでわかりやすく解説
switch文は、複数の選択肢の中から1つだけを実行したい場合に使われる条件分岐の制御構造です。switch文は、指定した式の値を整数定数や文字定数のリストと順番に照合していき、一致するcaseが見つかった時点で、そのcaseに紐づくステートメント(文)が実行されます。 switch文の基本構文 switch文の基本的な書き方は以下の通りです。 switch (式){ case 値1 : 文1; break; case 値2 : 文2; break; &nbs
-
C++における条件分岐の基礎:if-else文とswitch文の使い方を徹底解説
条件分岐(意思決定)構造では、プログラマーがプログラムに評価・判定させる1つ以上の条件を指定し、その条件が「真(true)」と判定された場合に実行する文、さらに必要に応じて、条件が「偽(false)」と判定された場合に実行する別の文を記述する必要があります。 以下は、多くのプログラミング言語に共通する、典型的な条件分岐構造の一般的な流れを示した図です。 if-else文とは if文の後には、オプションとしてelse文を続けることができます。else文は、ifのブール式が「偽」と判定された場合に実行されます。C++におけるif...else文の基本構文は以下の通りです。 if(boolean