switch ステートメントの case の後の値は定数である必要があります。 switch ステートメントでは、case ラベルの後ろにある定数値に基づいてジャンプ テーブルが生成されるため、数回比較するだけで、対応するラベルにジャンプできます。変数が許可されている場合、switch は最初から最後までしか実行できません。比較することは意味を失います。
#switch ステートメントの case の後の値は定数である必要があります。
C 言語の switch は if の代わりにはならないからです。
スイッチはコンパイル中に最適化され、case ラベルの後ろにある定数値に基づいてジャンプ テーブルが生成され、数回比較するだけで、対応するラベルにジャンプできます。
したがって、ラベルを繰り返すことはできません。変数が許可されている場合、switch は一連の if else に縮退することしかできず、データの一部は最初から最後まで比較することしかできないため、switch の意味が失われます。
ジャンプ テーブルと 1 つずつの比較の複雑さは、これら 2 つの方法では大きく異なります。
これは、Python が C 言語の switch case に対応する制御構造を導入しない理由の 1 つでもあります。
一般表現:
switch (表达式) { case 常量表达式1: 语句1 case 常量表达式2: 语句2 ┇ case 常量表达式n: 语句n default: 语句n+1 }
switch は「スイッチ」を意味し、「選択」ステートメントでもありますが、その使用法は非常に簡単です。 switch は複数分岐の選択ステートメントです。簡単に言うと、複数の分岐は複数の if です。
機能的に言えば、switch ステートメントと if ステートメントは完全に相互に置き換えることができます。しかし、プログラミングの観点から見ると、それぞれに独自の特性があるため、今のところ、一方が他方を完全に置き換えることができるとは言えません。
ネストされた if が比較的少ない場合 (3 つ以内)、if を使用してプログラムを作成する方が簡単になります。
しかし、多くの分岐が選択されている場合、多くのレベルの if ステートメントがネストされ、その結果、プログラムが長くなり、可読性が低下します。
そのため、C 言語には、複数の分岐選択を処理するための switch ステートメントが用意されています。したがって、if と switch は明確な分業と言えます。多くの大規模プロジェクトでは、複数のブランチを選択する状況が頻繁に発生するため、switch ステートメントは依然として頻繁に使用されます。
推奨チュートリアル:「C 言語」
以上がswitch ステートメントの case の後の値は何でなければなりませんか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。