logo

C の Switch ステートメント

switch case ステートメントは、指定された式を評価し、評価された値 (特定の条件に一致する) に基づいて、それに関連付けられたステートメントを実行します。基本的に、さまざまな条件(ケース)に基づいてさまざまなアクションを実行するために使用されます。

  • switch case ステートメントは選択制御メカニズムに従い、値によって実行制御を変更できます。
  • 彼らは長いものの代わりです if ステートメント 変数を複数の整数値と比較します。
  • switch ステートメントは多方向分岐ステートメントです。これにより、式の値に基づいてコードのさまざまな部分に実行をディスパッチする簡単な方法が提供されます。

C では、switch case ステートメントは複数の条件から 1 つの条件を実行するために使用されます。これは、if-else-if ラダーに似ています。



if-else Java

switch ステートメントは、条件ベースのケースとデフォルトのケースで構成されます。

C の switch ステートメントの構文

  switch(expression)     {     case   value1  :   statement_1;   break;     case   value2  :   statement_2;   break;   . . .   case   value_n  :   statement_n;   break;     default:   default_statement; }>

Cでswitch caseステートメントを使用するにはどうすればよいですか?

プログラムで switch case を使用する前に、switch ステートメントのいくつかのルールについて知っておく必要があります。

switch case ステートメントの規則

switch ステートメントを使用する際に従う必要があるルールの一部を次に示します。



  1. switch ステートメントでは、 ケースバリュー のものである必要があります チャー そして 整数 タイプ。
  2. ケースは 1 つまたは N 個あります。
  3. この場合の値は次のようにする必要があります。 個性的
  4. ケースの各ステートメントには、break ステートメントを含めることができます。オプションです。
  5. デフォルトのステートメントもオプションです。

C
// C program to Demonstrate returning of day based numeric // value #include  int main() {  // switch variable  int var = 1;  // switch statement  switch (var) {  case 1:  printf('Case 1 is Matched.');  break;  case 2:  printf('Case 2 is Matched.');  break;  case 3:  printf('Case 3 is Matched.');  break;  default:  printf('Default case is Matched.');  break;  }  return 0; }>

出力
Case 1 is Matched.>

switch ステートメントはどのように機能するのでしょうか?

C での switch ステートメントの動作は次のとおりです。

  1. ステップ1: スイッチ変数が評価されます。
  2. ステップ2: 評価された値は、現在のすべてのケースに対して照合されます。
  3. ステップ 3A: 一致するケース値が見つかった場合は、関連付けられたコードが実行されます。
  4. ステップ 3B: 一致するコードが見つからない場合は、デフォルトのケースがあれば実行されます。
  5. ステップ 4A: このケースに Break キーワードが存在する場合、プログラム制御は switch ステートメントから抜け出します。
  6. ステップ 4B: Break キーワードが存在しない場合は、一致するケース以降のすべてのケースが実行されます。
  7. ステップ5: switch ステートメント以降のステートメントが実行されます。

フローチャートを使用すると、C の switch ステートメントの動作を理解することもできます。

Switch文のフローチャート

cのスイッチケース

C の switch ステートメントのフローチャート



スイッチケースの破損

このキーワードは、switch ブロック内で実行を停止するために使用されます。スイッチブロックを終了し、そこから抜け出すのに役立ちます。 Break ステートメントに到達すると、switch は終了し、制御フローは switch ステートメントに続く次の行にジャンプします。

Break ステートメントはオプションです 。省略した場合、実行は次のケースに継続されます。制御フローは、ブレークに達するまで後続のケースに移行します。

ブレークなしのスイッチケースの例

C
// C Program to demonstrate the behaviour of switch case // without break #include  int main() {  int var = 2;  // switch case without break  switch (var) {  case 1:  printf('Case 1 is executed.
');  case 2:  printf('Case 2 is executed.
');  case 3:  printf('Case 3 is executed.');  case 4:  printf('Case 4 is executed.');  }  return 0; }>

出力
Case 2 is executed. Case 3 is executed.Case 4 is executed.>

スイッチケースのデフォルト

デフォルトのキーワードは、次のセットを指定するために使用されます。 大文字と小文字が一致しない場合に実行するステートメント

それは オプション switch ケースでデフォルトのキーワードを使用するには。 switch case ステートメントにデフォルト ステートメントがない場合でも、問題なく実行されます。

Switch Case ステートメントに関する重要なポイント

1. Switch 式の結果は次のようになります。 定数値

switch ステートメントで指定された式が定数値にならない場合、その式は無効になります。 switch case の有効な式は次のとおりです。

Javaの期間
// Constant expressions allowed switch(1+2+23) switch(1*2+3%4) // Variable expression are allowed provided // they are assigned with fixed values switch(a*b+c*d) switch(a+b+c)>

2. 式の値は int 型または char 型のみにしてください。

switch ステートメントは、整数値または文字値のみを評価できます。したがって、switch 式は int 型または char 型の値のみを返す必要があります。

3. 大文字と小文字の値は一意である必要があります

C switch ステートメントでは、重複する case 値は許可されません。

3. switch文の入れ子

switch ステートメントのネストが許可されます つまり、別のスイッチ内に switch ステートメントを含めることができます。ただし、ネストされた switch ステートメントは、プログラムがより複雑になり、読みにくくなるため、避ける必要があります。

4. デフォルトのブロックはどこにでも配置できます

デフォルトのケースは、その配置に関係なく、他のケース条件がいずれも満たされない場合にのみ実行されます。したがって、これを先頭、中間、または最後に配置しても、核となるロジックは変わりません。

C の switch ステートメントの例

例 1: スイッチケースを使用して曜日を出力する C プログラム。

C
// C program to print the day using switch #include  // Driver Code int main() {  int day = 2;  printf('The day with number %d is ', day);  switch (day) {  case 1:  printf('Monday');  break;  case 2:  printf('Tuesday');  break;  case 3:  printf('Wednesday');  break;  case 4:  printf('Thursday');  break;  case 5:  printf('Friday');  break;  case 6:  printf('Saturday');  break;  case 7:  printf('Sunday');  break;  default:  printf('Invalid Input');  break;  }  return 0; }>

出力
The day with number 2 is Tuesday>

例 2: C で switch case を使用した単純な計算機

C
// C Program to create a simple calculator using switch // statement #include  #include  // driver code int main() {  // switch variable  char choice;  // operands  int x, y;  while (1) {  printf('Enter the Operator (+,-,*,/)
Enter x to '  'exit
');  scanf(' %c', &choice);  // for exit  if (choice == 'x') {  exit(0);  }  printf('Enter the two numbers: ');  scanf('%d %d', &x, &y);  // switch case with operation for each operator  switch (choice) {  case '+':  printf('%d + %d = %d
', x, y, x + y);  break;  case '-':  printf('%d - %d = %d
', x, y, x - y);  break;  case '*':  printf('%d * %d = %d
', x, y, x * y);  break;  case '/':  printf('%d / %d = %d
', x, y, x / y);  break;  default:  printf('Invalid Operator Input
');  }  }  return 0; }>


出力

Enter the operator (+, -, *, /) Enter x to exit + Enter the two numbers: 100 + 200 100 + 200 = 300>

C switch ステートメントの利点

  1. if else if より読みやすい。
  2. 多数の条件に対するデバッグと保守が容易になります。
  3. 実行速度が速くなります。

C switch ステートメントの欠点

  1. switch case は int 型または char 型のみを評価できます。
  2. 論理式はサポートされていません。
  3. あらゆる場合に休憩を追加することを念頭に置く必要があります。

結論

この記事では、C プログラミングの switch ステートメントとその使用方法について説明しました。これは、独自のメリットとデメリットを持つ if-else-if ラダーのような条件文です。これは、評価する条件の数が多い場合に最も適しています。

C switch ステートメントに関する FAQ

1. C のスイッチケースとは何ですか?

switch case ステートメントは、switch 変数を定義し、switch 変数の値に基づいて別のコードを実行できるフロー制御ステートメントです。これは、if else if はしごの代替です。

2. C の switch ステートメントの場合はどうなりますか?

case キーワードは、switch ステートメントでさまざまなケースとそれに関連するコードを定義するために使用されます。

3. スイッチケースの破損は何をするのですか?

Break キーワードは、一致するケースを実行した後に switch ブロックを終了するために使用されます。

4. C の switch ラダーと if else if ラダーの違いは何ですか?

以下が主なものです CスイッチとC if else ifラダーの違い :

タイプスクリプトのアロー関数

スイッチ

もしそうでなければ

スイッチ変数の値に基づいて、さまざまなケースが実行されます。指定された条件に基づいてさまざまなブロックが実行されます。
int 型または char 型の式のみを評価できます。あらゆるタイプの式を評価できます。
多数の条件をより速く、より簡単に読み取ることができます。条件がたくさんあると面倒になってしまうこともあります。

必読:

  • C の Switch Case に関する興味深い事実
  • if または switch を使用せずに個々の数字を単語として出力する