switch...case...if...else...区別する

2500 ワード

switchもifも分岐文を処理するために使用されるので、使用するときは、コード効率の問題を考慮して、まず彼らの違いを理解しなければなりません.
まず、この2つの文のフォーマットを見てみましょう.
  • if…else…
  •     if (   1)
        {
              1;
        }
        else if (   2)
        {
              2;
        }
        else if (   3)
        {
              3;
        }
        else if (   4)
        {
              4;
        }
        ...
        else
        {
              n+1;
        }
    
    
  • switch…case…
  •     switch (   )
        {
        case  1:  1;break;
        case  2:  2;break;
        case  3:  3;break;
        case  4:  4;break;
        case  5:  5;break;
        ...
        default:  n+1;break;
        }

    if文は実行するたびに条件式がtrueかfalseかを判断し、trueの場合は対応する文を実行し、falseの場合は最後のelseが終わるまで次の式を判断し続けます.直線的に実行します.switch文は、エントリ時に式の値を計算し、ジャンプテーブルを検索して対応する文を実行します.そうしないとdefaultになります.二叉木に似ています.
    区別1:
    switch...case...はcase値が定数の分岐構造にのみ使用できますが、if...else...はより柔軟です.
    違い2:
    if判断条件は論理式であり、ブール型の合法式、定数、列挙などであってもよい.一方、switchは通常、算術式、または文字を処理します.
    違い3:
    switchは,一度条件判断を行った後,プログラムの条件文に直接実行する.if...elseにはいくつかの条件があり、何度も判断しなければなりません.
    区別4:
    if文に比べてswitch文は空間で時間を変える分岐構造である.ジャンプテーブルを生成するため、コードスペースが多くなります.case定数分布範囲が広いが実際の有効値が少ない場合,switch...caseの空間利用率は低くなる.
    区別5
    分岐が多い場合、switchの使用効率はifより高く、最初のif条件が真でない限り高い.
    次に,ブランチが多い場合,if...else...コードの使用可読性はswitch...case...よりも高くない.