switchステートメントを使用すると、複数の条件をテストし、条件がtrueの場合にのみ特定のブロックを実行できます。 if…elseif….elseステートメントと同様に機能しますが、構文はより単純で、読みやすく、管理しやすいものです。
このチュートリアルでは、Cプログラミングでswitchステートメントを作成して操作する方法を紹介します。
基本的な使用法
switchステートメントは簡単に実装できます。一般的な構文は次のとおりです。
スイッチ ((expr)。 {{
casevar1:
//コード
壊す;
casevar2:
//コード
壊す;
casevar3:
//コード
壊す;
casevarN:
//コード
壊す;
..。
…。
…。
ディフォルト:
//コード
}
使い方
switchステートメントは、各ケースブロックを評価するための単純なロジックを実装します。
まず、スイッチブロック内の式を評価します。次に、スイッチブロックの値を各ケースブロックと比較します。
定義されたcaseブロックのいずれかで一致するものが見つかると、breakキーワードが見つかるまで、そのブロック内のコードを実行します。
定義されたcaseブロックのいずれにも一致がない場合は、デフォルトのステートメントにジャンプして、その中のコードを実行します。デフォルトのブロックはオプションであり、一致しないシナリオに必要なアクションがない場合は省略可能です
ノート: 一致するブロックの後のすべてのステートメントが実行されないように、各caseステートメントがbreakステートメントで終了するようにすることをお勧めします。
CSwitchCaseステートメントの例
非常に簡単な例でswitchステートメントを説明しましょう。
#含むintmain(()。 {{
intどこ= 5;
スイッチ ((どこ)。 {{
case3:
printf ((「値は3です」)。;
壊す;
case4:
printf ((「値は4です」)。;
壊す;
case5:
printf ((「値は5です」)。;
壊す;
ディフォルト:
printf ((「値は3、4、5のいずれでもありません」)。;
}
return0;
}
上記の例を実行すると、次のような出力が得られるはずです。
値は5次のフロー図は、上記のプログラムのロジックを示しています。
ネストされたSwitchステートメント
Cを使用すると、switchステートメント内にswitchステートメントをネストできます。ネストされたswitchステートメントは、外部スイッチの値に関連付けられています。
次の例を考えてみましょう。
#含むintmain(()。 {{
int部門= 5;
intaccess_code= 2028年;
スイッチ ((部門)。 {{
case1:
スイッチ ((アクセスコード)。 {{
case2021:
printf ((「[+]有効なアクセスコード!」)。;
壊す;
ディフォルト:
printf ((「[-]無効なアクセスコード!」)。;
}
壊す;
ディフォルト:
printf ((「[-]部門1のみが許可されています!」)。;
}
return0;
}
上記の例では、2つのswitchステートメントを実装しています。最初に、提供された部門が1であるかどうかを確認します。trueの場合、次のスイッチブロックに進み、有効なアクセスコードを確認します。
dept値が1でない場合、実行はデフォルトブロックに移動します。
以下は、正しいおよび誤った部門およびアクセスコードを使用した上記のコードの実行です。
最初の例では、部門コードとアクセスコードの両方が正しいです。したがって、実行がデフォルトのブロックに達することはありません。
2番目の例では、部門コードとアクセスコードの両方が正しくありません。したがって、実行はすぐに最初のデフォルトブロックにジャンプします。
Switchステートメントのガイドライン
以下は、Cでswitchステートメントを作成するときに注意する価値のある簡単なガイドラインです。
- switchキーワードに式を渡す必要があります。
- caseステートメントは一意の値をチェックする必要があります
- breakキーワードを使用して、各ケースブロックを終了します。
- 複数のswitchステートメントをネストできます。
- 一致しないケースにアクションが必要な場合は、デフォルトのステートメントを含めることができます。
結論
このガイドでは、Cswitchステートメントの作成と使用の基本について説明しました。 switchステートメントは、and ifelseステートメントで実装するのが難しい複雑な決定ケースがある場合に役立ちます。