ホームページ >Java >&#&チュートリアル >C が `switch` ステートメントの `case` ステートメントの後に `break` ステートメントを自動的に挿入しないのはなぜですか?
C の Case ステートメントの後の Break ステートメントの必要性
C の switch ステートメントは単一の式を評価し、それに基づいて特定のコード ブロックを実行します。一致するケースラベル。コンパイラは各 case ブロックの後に Break ステートメントを自動的に挿入しませんが、この設計上の決定には根深い理由があり、実際的な柔軟性が提供されます。
自動 Break ステートメントがない理由
歴史的に、この設計の選択は ARM プロセッサ アーキテクチャの制限に由来しています。 ARM 命令セットの初期のバージョンでは、ブレーク命令にはパフォーマンスが低下していました。ブレーク ステートメントの挿入をプログラマに任せることで、コンパイラは特定のシナリオでの最適化と命令サイクルの削減を可能にしました。
複数のコード ブロックが実行されるとき
が存在しないにもかかわらず自動 Break ステートメントの場合、複数のコード ブロックを許可する正当な使用例があります。実行:
switch (ch) { case 'A': case 'B': case 'C': printf("Vowel\n"); break; default: printf("Consonant\n"); }
ここで、入力文字が「A」、「B」、または「C」の場合、プログラムは「母音」を出力する必要があります。これらのケースに単一のコード ブロックを使用することで、コードの重複を避け、明確さを維持できます。
switch (ch) { case '1': case '2': case '3': printf("Low number\n"); break; case '4': printf("Medium number\n"); break; default: printf("High number\n"); }
ここで、最初の 3 つのケースは小さい数値を処理するため、同じコード ブロックを実行します。
フォールスルーはプログラミングに反していると考えられますが、ほとんどの場合、コードが十分に文書化され、その意味が完全に理解されている限り、有益であることが証明される場合もあります。
以上がC が `switch` ステートメントの `case` ステートメントの後に `break` ステートメントを自動的に挿入しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。