比較表
比較基準 | if-else | スイッチ |
---|---|---|
基本 | どのステートメントが実行されるかは、ifステートメント内の式の出力によって異なります。 | どのステートメントが実行されるかはユーザーによって決定されます。 |
式 | if-else文は複数の選択肢に複数の文を使用します。 | switchステートメントは複数の選択肢に対して単一の式を使用します。 |
テスト | if-elseステートメントは、論理式と同等かどうかをテストします。 | 同等性についてのみswitchステートメントをテストします。 |
評価 | if文は、整数、文字、ポインタ、浮動小数点型、またはブール型を評価します。 | switchステートメントは文字または整数値のみを評価します。 |
実行順序 | if文を実行するか、else文を実行します。 | switchステートメントは、breakステートメントが現れるまで、またはswitchステートメントの終わりに達するまで、次々にケースを実行します。 |
デフォルト実行 | ifステートメント内の条件が偽の場合、デフォルトでelseステートメントが作成されていればそれが実行されます。 | switchステートメント内の条件がいずれのケースとも一致しない場合は、そのインスタンスに対してデフォルトステートメントが作成されていればそれが実行されます。 |
編集 | ネストされたif-elseステートメントが使用されている場合、if-elseステートメントを編集するのは困難です。 | スイッチケースは簡単に認識されるので、編集するのは簡単です。 |
if-elseの定義
if-else文は、OOPの選択文に属します。 if-elseステートメントの一般形は次のとおりです。
if(expression){statement} 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 << "ダークチョコレートを選びます"; ブレーク; ケース2:cout << "あなたはお菓子を選びます"; ブレーク; ケース3:cout << "lollypopを選択しました"; ブレーク; 。 。 default cout << "あなたは何も選ばない"; }
ここでは、「i」の値によってどちらのケースが実行されるかが決定され、ユーザーが1、2、または3以外の「i」の値を指定した場合は、デフォルトのケースが実行されます。
if-elseとswitchの主な違い
- ifステートメントの内側の式は、ステートメントをifブロックの内側で実行するか、elseブロックの下で実行するかを決定します。 一方、switch文の中の式はどちらのケースを実行するかを決定します。
- 複数の文を選択するために、複数のif文を使用できます。 switchでは、複数の選択肢に対して1つの式しかありません。
- If-esleステートメントは、論理式と等価性を検査します。 一方、switchは等価性のみをチェックします。
- ifステートメントは、整数、文字、ポインター、浮動小数点型、またはブール型を評価します。 一方、switch文は、文字データ型または整数データ型のみを評価します。
- 実行順序は、ifブロックが実行される場合のステートメント、またはelseブロックステートメントが実行される場合のステートメントのいずれかと同じです。 一方、switchステートメントの式は、実行するケースを決定します。各ケースの後にbreakステートメントを適用しないと、switchステートメントの最後まで実行されます。
- ifの内側の式が偽になった場合、elseブロックの内側のステートメントが実行されます。 switch文の中のexpressionがfalseであることが判明した場合は、デフォルトの文が実行されます。
- 訂正が必要な箇所を追跡するのは面倒なので、if-elseステートメントを編集するのは困難です。 一方、switchステートメントはトレースが容易なので、編集するのは簡単です。
結論:
switch文は、文ごとに大文字と小文字が区別されるため編集が簡単ですが、if-else文のネストでは、編集する文を識別するのが難しくなります。