C の switch ステートメントは、if-else-if ラダー ステートメントの代替であり、switch 変数と呼ばれる単一の変数のさまざまな値に対して複数の演算を実行できます。ここでは、単一変数の異なる値に対して複数のケースでさまざまなステートメントを定義できます。
switch ステートメントの構文 C言語 を以下に示します。
switch(expression){ case value1: //code to be executed; break; //optional case value2: //code to be executed; break; //optional ...... default: code to be executed if all cases are not matched; }
C言語のswitch文のルール
- の スイッチ式 整数型または文字型である必要があります。
- の ケースバリュー 整数または文字定数である必要があります。
- の ケースバリュー switch ステートメント内でのみ使用できます。
- の ブレークステートメント スイッチの場合は必須ではありません。オプションです。ケース内に Break ステートメントが見つからない場合は、一致したケースの後にすべてのケースが実行されます。として知られています 落ちる C switch ステートメントの状態。
例を挙げて理解してみましょう。以下の変数があると仮定します。
int x,y,z; char a,b; float f;
有効なスイッチ | 無効なスイッチ | 有効なケース | 無効なケース |
---|---|---|---|
スイッチ(x) | スイッチ(f) | ケース3; | ケース2.5; |
スイッチ(x>y) | スイッチ(x+2.5) | ケース「a」; | ケースx; |
スイッチ(a+b-2) | ケース1+2; | ケースx+2; | |
スイッチ(関数(x,y)) | ケース 'x' > 'y'; | ケース1、2、3。 |
C の switch ステートメントのフローチャート
switch case ステートメントの機能
まず、switch ステートメントで指定された整数式が評価されます。この値は、さまざまな場合に指定された定数値と 1 つずつ照合されます。一致するものが見つかった場合、そのケースで指定されたすべてのステートメントが、デフォルトのステートメントを含むそのケースの後に存在するすべてのケースとともに実行されます。 2 つのケースが同じような値を持つことはありません。一致したケースに Break ステートメントが含まれている場合、その後に存在するすべてのケースがスキップされ、制御がスイッチから外されます。それ以外の場合は、一致したケースに続くすべてのケースが実行されます。
C の switch ステートメントはどのように機能しますか?
C で switch ステートメントがどのように機能するかを段階的に見てみましょう。
次のことを考慮してください switch ステートメント :
C プログラム:
#include int main() { int num = 2; switch (num) { case 1: printf('Value is 1 '); break; case 2: printf('Value is 2 '); break; case 3: printf('Value is 3 '); break; default: printf('Value is not 1, 2, or 3 '); break; } return 0; }
出力
Value is 2
段階的なプロセス:
- の スイッチ変数番号 評価されます。この場合、 1つで で初期化されます 値2 。
- の 評価された数値 (2) の値 内の各ケースのラベルで指定された定数と比較されます。 スイッチブロック 。
- の switch ステートメント と一致します 評価値(2) で指定された定数を使用して、 2番目のケース(ケース2) 。一致するものがあったため、プログラムはそのコードに関連付けられたコード ブロックにジャンプします。 一致するケース (ケース 2) 。
- に関連付けられたコード ブロック ケース2 が実行され、出力されます 「値は 2」 コンソールに。
- の '壊す' キーワードはコードブロックに存在します ケース2 。その結果、プログラムはコード ブロックの実行直後に switch ステートメントから抜け出します。
- プログラム制御はその後も継続します。 switch ステートメント 、およびそれに続くステートメント switch ステートメント が実行されます。この場合、スイッチの後にステートメントがないため、プログラムは終了します。
- の switch ステートメント の価値を評価しました 変数番号 、ケース 2 との一致が見つかり、対応するコード ブロックを実行して、終了しました。 スイッチブロック の存在により、 「中断」ステートメント 。
C の switch ステートメントの例
C 言語の switch ステートメントの簡単な例を見てみましょう。
#include int main(){ int number=0; printf('enter a number:'); scanf('%d',&number); switch(number){ case 10: printf('number is equals to 10'); break; case 50: printf('number is equal to 50'); break; case 100: printf('number is equal to 100'); break; default: printf('number is not equal to 10, 50 or 100'); } return 0; }
出力
Javaのスキャナー
enter a number:4 number is not equal to 10, 50 or 100 enter a number:50 number is equal to 50
スイッチケース例2
#include int main() { int x = 10, y = 5; switch(x>y && x+y>0) { case 1: printf('hi'); break; case 0: printf('bye'); break; default: printf(' Hello bye '); } }
出力
hi
Switch ステートメントの Break および Default キーワード
を説明して定義してみましょう '壊す' そして 「デフォルト」キーワード switch ステートメントのコンテキスト内で、コード例と出力例を示します。
1. キーワードを区切る:
の 「ブレイク」キーワード 各ケースのコード ブロック内で switch ステートメントを途中で終了するために使用されます。プログラムが問題に遭遇したとき、 「中断」ステートメント case ブロック内では、すぐに終了します。 switch ステートメント 、後続の case ブロックの実行を妨げます。の 「中断」ステートメント switch ステートメントを避けるために重要です。 「フォールスルー」 行動。
例:
の使用法を理解するためのプログラムを見てみましょう。 ブレークキーワード Cで。
#include int main() { int num = 3; switch (num) { case 1: printf('Value is 1 '); break; // Exit the switch statement after executing this case block case 2: printf('Value is 2 '); break; // Exit the switch statement after executing this case block case 3: printf('Value is 3 '); break; // Exit the switch statement after executing this case block default: printf('Value is not 1, 2, or 3 '); break; // Exit the switch statement after executing the default case block } return 0; }
出力
Value is 3
説明:
この例では、 switch ステートメント の値を評価します 変数番号 (つまり 3 ) と一致します ケース3 。に関連付けられたコード ブロック ケース3 実行され、印刷されます 「値は 3」 コンソールに。の 「中断」ステートメント 内で ケース3 この case ブロックを実行した直後にプログラムが switch ステートメントを終了し、他の case が実行されるのを防ぎます。
2. デフォルトのキーワード:
どれも当てはまらないとき ケース定数 一致する 評価された式 として動作します。 キャッチオールケース 。一致するケースが存在せず、 「デフォルト」ケースが存在します 、に関連付けられたコード ブロック 'デフォルト' ケースが実行されます。これは、指定された入力に記述された状況がどれも当てはまらない状況を処理するためによく使用されます。
例:
の使用法を理解するためのプログラムを見てみましょう。 デフォルトのキーワード Cで。
#include int main() { int num = 5; switch (num) { case 1: printf('Value is 1 '); break; case 2: printf('Value is 2 '); break; case 3: printf('Value is 3 '); break; default: printf('Value is not 1, 2, or 3 '); break; // Exit the switch statement after executing the default case block } return 0; }
出力
Value is not 1, 2, or 3
説明:
この例では、 switch ステートメント の値を調べます 変数番号 (つまり 5 )。数値に一致する大文字と小文字が一致しないため、プログラムは、その数値に関連付けられたコード ブロックを実行します。 「デフォルト」の場合 。の 「中断」ステートメント の中で 「デフォルト」の場合 プログラムが確実に終了するようにします。 switch ステートメント を実行した後、 'デフォルト' ケースブロック。
どちらも '壊す' そして 「デフォルト」キーワード switch ステートメント内の実行フローを制御する上で重要な役割を果たします。の 「中断」ステートメント フォールスルー動作の防止に役立ちます。 「デフォルト」の場合 一致しないケースを処理する方法を提供します。
C Switch ステートメントはフォールスルーです
C 言語では、switch ステートメントはフォールスルーです。これは、switch ケースで Break ステートメントを使用しない場合、一致するケース以降のすべてのケースが実行されることを意味します。
以下に示す例で switch ステートメントのフォールスルー状態を理解してみましょう。
#include int main(){ int number=0; printf('enter a number:'); scanf('%d',&number); switch(number){ case 10: printf('number is equal to 10 '); case 50: printf('number is equal to 50 '); case 100: printf('number is equal to 100 '); default: printf('number is not equal to 10, 50 or 100'); } return 0; }
出力
enter a number:10 number is equal to 10 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100
出力
enter a number:50 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100
ネストされた switch case ステートメント
switch ステートメント内では、switch ステートメントを必要なだけ使用できます。このようなタイプのステートメントは、ネストされた switch case ステートメントと呼ばれます。次の例を考えてみましょう。
#include int main () { int i = 10; int j = 20; switch(i) { case 10: printf('the value of i evaluated in outer switch: %d ',i); case 20: switch(j) { case 20: printf('The value of j evaluated in nested switch: %d ',j); } } printf('Exact value of i is : %d ', i ); printf('Exact value of j is : %d ', j ); return 0; }
出力
the value of i evaluated in outer switch: 10 The value of j evaluated in nested switch: 20 Exact value of i is : 10 Exact value of j is : 20
switch ステートメントの利点:
いくつかの利点があります switch ステートメント switch ステートメントの主な利点は次のとおりです。
の switch ステートメント として機能するデフォルトのケースの使用をサポートします。 キャッチオールオプション 提供されたケースのいずれにも一致しない値の場合。これ デフォルトのケース 明示的に述べられていない異常な入力または状況に対処します。
switch ステートメントの欠点:
いくつかの欠点がありますが、 switch ステートメント switch ステートメントの主な欠点は次のとおりです。