3

重複の可能性:
switch ステートメントが中断を必要とするように設計されたのはなぜですか?

最も一般的な言語 [c、c++、java] の興味深い現象は、デフォルトでスイッチがフォールスルーすることです。

理性が気になるのですが、この話を知っている人はいますか?

4

1 に答える 1

1

これは C で簡単に最適化できるようにジャンプ テーブルを作成する意図がありswitchました。基本的には式に基づいて、アプリがジャンプ距離を計算し、特定のポイントにジャンプし、そのポイントから実行を続けます。

ただし、この動作は、乗算でコードの繰り返しを回避するのに役立ち、必要なときに scaseを配置するのが難しくないため、時々役立つと思います。break

Wikiには、フォールダウンをどのように利用できるかを示す適切な例があります。

switch (n) {
  case 0:
    printf("You typed zero.");
    break;
  case 4:
    printf("n is an even number.");
  case 1:
  case 9:
    printf("n is a perfect square.");
    break;  
  case 2:
    printf("n is an even number.");
  case 3:
  case 5:
  case 7:
    printf("n is a prime number.");
    break;
  case 6:
  case 8:
    printf("n is an even number.");
    break;
  default:
    printf("Only single-digit numbers are allowed.");
}
于 2012-09-11T07:53:39.767 に答える