ホームページ  >  記事  >  バックエンド開発  >  switch ステートメントの case の後の値は何でなければなりませんか?

switch ステートメントの case の後の値は何でなければなりませんか?

烟雨青岚
烟雨青岚オリジナル
2020-07-07 14:31:0619786ブラウズ

switch ステートメントの case の後の値は定数である必要があります。 switch ステートメントでは、case ラベルの後ろにある定数値に基づいてジャンプ テーブルが生成されるため、数回比較するだけで、対応するラベルにジャンプできます。変数が許可されている場合、switch は最初から最後までしか実行できません。比較することは意味を失います。

switch ステートメントの case の後の値は何でなければなりませんか?

#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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。