if-elseとswitchの違い

著者: Laura McKinney
作成日: 3 4月 2021
更新日: 5 5月 2024
Anonim
Рефакторинг: switch vs if-else vs enum vs HashMap [Шаблон "Команда"]
ビデオ: Рефакторинг: switch vs if-else vs enum vs HashMap [Шаблон "Команда"]

コンテンツ


「If-else」と「switch」はどちらも選択ステートメントです。選択ステートメントは、条件が「true」であるか「false」であるかに基づいて、プログラムのフローをステートメントの特定のブロックに転送します。 if-elseステートメントとswitchステートメントの基本的な違いは、if-elseステートメントが「ifステートメントの式の評価に基づいてステートメントの実行を選択する」ことです。 switchステートメントは「多くの場合、キーボードコマンドに基づいてステートメントの実行を選択します」。

  1. 比較表
  2. 定義
  3. 主な違い
  4. 結論

比較表

比較の根拠if-elseスイッチ
ベーシックどのステートメントが実行されるかは、ifステートメント内の式の出力に依存します。どのステートメントが実行されるかはユーザーが決定します。
表現if-elseステートメントは、複数の選択肢に対して複数のステートメントを使用します。switchステートメントは、複数の選択肢に単一の式を使用します。
テスト中if-elseステートメントは、論理式だけでなく同等性もテストします。switchステートメントは、等価性のみをテストします。
評価ifステートメントは、整数、文字、ポインター、浮動小数点型、またはブール型を評価します。switchステートメントは、文字または整数値のみを評価します。
実行の順序ステートメントが実行される場合、またはelseステートメントが実行される場合。switchステートメントは、breakステートメントが現れるか、switchステートメントの終わりに達するまで、次々にケースを実行します。
デフォルトの実行ifステートメント内の条件がfalseの場合、デフォルトでelseステートメントが作成された場合に実行されます。switchステートメント内の条件がどのケースとも一致しない場合、そのインスタンスについては、作成された場合にデフォルトステートメントが実行されます。
編集ネストされたif-elseステートメントが使用されている場合、if-elseステートメントを編集することは困難です。スイッチケースは簡単に認識できるため、簡単に編集できます。

if-elseの定義

if-elseステートメントは、OOPの選択ステートメントに属します。 if-elseステートメントの一般的な形式は次のとおりです


if(expression){statement(s)} else {statement(s)}

ここで、「if」と「else」はキーワードであり、ステートメントは単一のステートメントまたはステートメントのブロックにすることができます。式は、ゼロ以外の値については「true」と評価され、ゼロについては「false」と評価されます。
ifステートメントの式には、整数、文字、ポインター、浮動小数点を含めることができます。または、ブール型にすることもできます。 elseステートメントは、if-elseステートメントではオプションです。式がtrueを返す場合、ifステートメント内のステートメントが実行され、falseを返す場合、elseステートメント内のステートメントが実行され、elseステートメントが作成されない場合、アクションは実行されず、プログラムの制御が飛び出しますif-elseステートメントの。

例で理解してみましょう。

int i = 45、j = 34; if(i == 45&j == 34){cout << "i =" <

スイッチの定義

switchステートメントは、複数選択の選択ステートメントです。 switchステートメントの一般的な形式は次のとおりです

switch(expression){case constant1:statement(s);ブレーク; case constant2:ステートメントブレーク; case constant3:ステートメント;ブレーク; 。 。デフォルトステートメント; }

式が整数または文字定数を評価する場所。ここの式は、等しいかどうかのみを評価します。式は、caseステートメントにある定数に対して検証されます。一致するものが見つかった場合、そのケースに関連付けられたステートメントは、「ブレーク」が発生するまで実行されます。 caseステートメントではbreakステートメントがオプションであるため、breakステートメントが存在しない場合、switchステートメントが終了するまで実行は停止しません。
式には単一の式のみが含まれます。 switchステートメントは、多くの場合、キーボードコマンドを使用して、複数のcaseステートメントから1つを選択します。


int c; cout << "は1〜3"の値を選択します。 cin >> i; switch(i){case 1:cout << "dark choclateを選択";ブレーク;ケース2:cout << "キャンディーを選ぶ";ブレーク;ケース3:cout << "ロリポップを選ぶ";ブレーク; 。 。デフォルトcout << "何も選択しない"; }

ここで、「i」の値はどのケースを実行するかを決定し、ユーザーが「i」の値を1、2、または3以外に指定すると、デフォルトのケースが実行されます。

  1. ifステートメント内の式は、ifブロック内またはelseブロック下でステートメントを実行するかどうかを決定します。一方、switchステートメント内の式は、実行するケースを決定します。
  2. 複数のステートメントを選択するために、複数のifステートメントを使用できます。スイッチでは、複数の選択肢に対して1つの式しかありません。
  3. If-esleステートメントは、論理式だけでなく同等性もチェックします。一方、スイッチは同等性のみをチェックします。
  4. ifステートメントは、整数、文字、ポインター、浮動小数点型、またはブール型を評価します。一方、switchステートメントは、文字または整数データ型のみを評価します。
  5. 実行シーケンスは、ifブロックの下で実行されるステートメント、またはelseブロックの下で実行されるステートメントのいずれかに似ています。一方、switchステートメントの式は、どのケースを実行するかを決定し、各ケースの後にbreakステートメントを適用しない場合、switchステートメントの最後まで実行します。
  6. if内の式がfalseである場合、elseブロック内のステートメントが実行されます。 switchステートメント内の式がfalseであることが判明した場合、デフォルトのステートメントが実行されます。
  7. 修正が必要な場所を追跡するのは退屈なので、if-elseステートメントを編集するのは困難です。一方、switchステートメントはトレースしやすいため、簡単に編集できます。

結論:

switchステートメントは、さまざまなステートメントの個別のケースを作成するため、編集が簡単です。一方、ネストされたif-elseステートメントでは、編集するステートメントを識別することが難しくなります。