誰かがこれを私に説明してもらえますか?
これらはかなり似ていますが、それぞれにいくつかの特別な機能があります。
スイッチ
switch
は通常、多数のネストされたif else
したがって、より読みやすいbreak
を省略すると、多くのCのような言語で次のケースに進むことができます。 if else
goto
が必要になります(読者にとってはあまり良くありません...言語がgoto
をサポートしている場合)。switch
はプリミティブ型のみをキーとして、定数をケースとして受け入れます。これは、非常に高速なジャンプテーブルを使用してコンパイラによって最適化できることを意味します。switch
を正しくフォーマットする方法は明確ではありません。意味的には、ケースはジャンプターゲット(goto
のラベルなど)であり、左にフラッシュする必要があります。中括弧があると事態は悪化します:
case XXX: {
} break;
または、ブレースを独自の行に入れる必要がありますか?閉じブレースをbreak
の後ろに置くべきですか?それはどれほど読めないでしょうか?等.
switch
は一部のデータ型のみを受け入れます。if-else
if
は、スイッチが定数を必要としている間、条件で複雑な式を許可しますbreak
s間のif
を誤って忘れることはできませんが、else
を忘れることはできます(特にcut'n'paste中)主な違いは、必要なすべての条件を評価するのではなく、switch
が immediately に関連するcase
に送信することです。 if-else
チェーン内。これは、チェーンの最後のコードが最初のコードよりもゆっくりと到達することを意味します。
そのため、if-else
チェーンにはないswitch
ステートメントにいくつかの制限が課せられます。すべてのデータ型を処理することはできず、すべてのcase
値は一定でなければなりません。
If-elseとswitchの違い
Ifステートメント内の式は、ifブロック内またはelseブロック下でステートメントを実行するかどうかを決定します。一方、switchステートメント内の式は、実行するケースを決定します。
If-esleステートメントは、論理式だけでなく等価性もチェックします。一方、スイッチは同等性のみをチェックします。
Ifステートメントは、整数、文字、ポインター、浮動小数点型、またはブール型を評価します。一方、switchステートメントは、文字または整数データ型のみを評価します。
実行シーケンスは、ifブロックの下のステートメントまたはelseブロックステートメントの下のステートメントのいずれかと同様です。一方、switchステートメントの式は、どのケースを実行するかを決定し、各ケースの後にbreakステートメントを適用しない場合、switchステートメントの最後まで実行します。
If内の式がfalseである場合、elseブロック内のステートメントが実行されます。 switchステートメント内の式がfalseであることが判明した場合、デフォルトのステートメントが実行されます。
修正が必要な場所を追跡するのは退屈なので、if-elseステートメントを編集するのは困難です。一方、switchステートメントはトレースしやすいため、簡単に編集できます。
ある言葉では、スイッチはif elseステートメントよりも少し速く動作すると言うことができます!!!
Switchステートメントとif-elseステートメントの違いは次のとおりです。
これはif-elseラダーの一般的な構文です。
if (condition1) { //Body of if }
else if (condition2) { //Body of if }
else if (condition3) { //Body of if }
else { //default if all conditions return false }
そして、これはスイッチの一般的な構文です:
switch ( variable )
{
case <variable value1>: //Do Something
break;
case <variable value2>://Do Something
break;
default: //Do Something
break;
}
If-elseラダーは厳格な条件チェックタイプで、スイッチはジャンプ値キャッチタイプです。
If-elseはしごを切り替える利点:
それ以外の場合-ITは意思決定に使用されます
Switchステートメント-ケース値のリストに対して、指定された変数の値をテストするために使用されます。