Cprogramming-switch-statement-in-c
提供:Dev Guides
C-switchステートメント
*switch* ステートメントを使用すると、変数を値のリストと等しいかどうかをテストできます。 各値はケースと呼ばれ、オンになっている変数は、 *switch case* ごとにチェックされます。
構文
Cプログラミング言語の*スイッチ*ステートメントの構文は次のとおりです-
switch(expression) {
case constant-expression :
statement(s);
break;/*optional*/
case constant-expression :
statement(s);
break;/*optional*/
/*you can have any number of case statements*/
default :/*Optional*/
statement(s);
}
次のルールは、*スイッチ*ステートメントに適用されます-
- switch ステートメントで使用される expression は、整数型または列挙型であるか、クラスが整数型または列挙型への単一の変換関数を持つクラス型である必要があります。
- スイッチ内には、任意の数のcaseステートメントを含めることができます。 各ケースの後に、比較する値とコロンが続きます。
- ケースの constant-expression は、スイッチの変数と同じデータ型である必要があり、定数またはリテラルである必要があります。
- オンに切り替えられる変数がケースと等しい場合、そのケースに続くステートメントは、 break ステートメントに到達するまで実行されます。
- break ステートメントに達すると、スイッチは終了し、制御のフローはswitchステートメントに続く次の行にジャンプします。
- すべてのケースに break を含める必要はありません。 break が表示されない場合、制御のフローは、ブレークに到達するまで後続のケースに_フォールスルー_します。
- switch ステートメントには、オプションの default ケースを含めることができます。これは、スイッチの最後に表示する必要があります。 デフォルトのケースは、どのケースにも当てはまらない場合にタスクを実行するために使用できます。 デフォルトの場合、 break は不要です。
流れ図
例
#include <stdio.h>
int main () {
/*local variable definition*/
char grade = 'B';
switch(grade) {
case 'A' :
printf("Excellent!\n" );
break;
case 'B' :
case 'C' :
printf("Well done\n" );
break;
case 'D' :
printf("You passed\n" );
break;
case 'F' :
printf("Better try again\n" );
break;
default :
printf("Invalid grade\n" );
}
printf("Your grade is %c\n", grade );
return 0;
}
上記のコードをコンパイルして実行すると、次の結果が生成されます-
Well done
Your grade is B