0

重複の可能性:
if-else ステートメントに対する switch の利点
If/Else If ではなく Switch/Case を使用する理由は?

私は現在、学校で「switch case」を学んでいますが、「if else」が既に存在する場合にそれを学ぶ意味は何なのか疑問に思っています。「if else」は基本的に「switch case」を行う別の方法です。

私が間違っている場合は修正してください。

4

5 に答える 5

3

聞いていてちょっと懐かしい。どちらも実際には同じように「見えた」。しかし、コードが実行されたときは少し異なります。

まず、「switch-case」は値のみの比較に関するものです。ただし、「if-else」はブール式を処理できます (これにより、はるかに複雑な句がサポートされます)。

実際に探しているものを見つけたときに一般的な 'if-else' を使用すると、プロセスは最後の if の処理が完了するまで実行されます (ただし、実際にはジャンプ技術を使用して 'switch- 'switch-case' を使用すると、検索している値が見つかると壊れて次のケースに進まないため、これは発生しません。また、'switch-case' は定義された値 (式ではない) のみを比較するため、if else よりも処理が高速です。また、'switch-case' も優れたフォーマット構造を備えています (シンプルで、コンパクトで、読みやすく、きれいです)。

于 2012-12-19T04:41:02.483 に答える
1

道具は多ければ多いほど良いです。両方を知っておく必要がある理由の最良のステートメントをフラットにします...ただし、より詳細な例-

switch ステートメントは、コンストラクトの単一の型の変数に対して機能します。

variable == value

したがって、たとえば C では、決定を下すために何かをいくつかの異なる文字列と比較しようとしている場合、スイッチではそれを行うことができません。この場合、if/else 構造について知る必要があります。

ただし、多数の順次チェックがある場合:

var == 1  or
var == 2  or
var == 3  etc

コンパイラは、switch ステートメントを取得してジャンプ テーブルに変換する場合があります。これにより、if/else リストのように多数の比較を行うよりも高速になります。

于 2012-12-19T04:58:22.873 に答える
0

両方を学ぶべきです。if/elseシーケンスを aswitch実装することは技術的に可能ですが、これを行うことは非常に悪い習慣です...ほとんどの場合。

したがって、2 つの構造を学び、それぞれの長所と短所を理解し、それぞれをいつ使用するのが適切かを判断する方法を学ぶ必要があります。

そして、C と C++ と Java (および C# と Pascal と他の多くの言語)がすべてswitch ステートメントをサポートしているという単なる事実は、その有用性について何かを教えてくれるはずです...

于 2012-12-19T04:16:07.570 に答える
0

switchこれは C 言語が提供する便利なツールであるため、構文を学習する必要があります。

ブロックとは違います。if-else

質問のコメント セクションには、相違点を説明する既存の StackOverflow 回答へのリンクがあります。

それぞれの構造には長所と短所があり、時間の経過とともに、どちらかを選択するのが適切な場合を学習します。

于 2012-12-19T04:09:10.060 に答える
0

switch-caseとの違いif-else:

  1. switch-case は値のみを切り替えます。ブール式は評価しません。
  2. breakswitch-case は、ケース ブロックの後に使用しない場合、その下の次のケースの実行を自動的に提供します。この機能は、"Telephone Dial Plan" のような複雑なコードを記述するのに役立つことがあります。
  3. 「メニュー」の表示など、比較の数が膨大な場合、スイッチ ケースは if-else よりもエレガントです。
于 2012-12-19T06:24:12.957 に答える