Heim > Java > javaLernprogramm > Warum fügt C nicht automatisch „break'-Anweisungen nach „case'-Anweisungen in „switch'-Anweisungen ein?

Warum fügt C nicht automatisch „break'-Anweisungen nach „case'-Anweisungen in „switch'-Anweisungen ein?

Susan Sarandon
Freigeben: 2024-12-09 22:33:23
Original
285 Leute haben es durchsucht

Why Doesn't C   Automatically Insert `break` Statements After `case` Statements in `switch` Statements?

Die Notwendigkeit von Break-Anweisungen nach Case-Anweisungen in C

Die C-Switch-Anweisung wertet einen einzelnen Ausdruck aus und führt einen bestimmten Codeblock basierend darauf aus ein passendes Kofferetikett. Obwohl der Compiler nach jedem Case-Block nicht automatisch Break-Anweisungen einfügt, hat diese Entwurfsentscheidung tief verwurzelte Gründe und bietet praktische Flexibilität.

Warum keine automatischen Break-Anweisungen?

Historisch gesehen ist diese Designwahl auf die Einschränkungen der ARM-Prozessorarchitektur zurückzuführen. In frühen Versionen des ARM-Befehlssatzes führten Break-Befehle zu Leistungseinbußen. Indem der Compiler das Einfügen von Break-Anweisungen dem Programmierer überließ, ermöglichte er eine Optimierung und verkürzte Befehlszyklen in bestimmten Szenarien.

Wenn mehrere Codeblöcke ausgeführt werden

Trotz der Abwesenheit Bei automatischen Break-Anweisungen gibt es legitime Anwendungsfälle, um die Ausführung mehrerer Codeblöcke zu ermöglichen:

  • Fall-through Verhalten: In bestimmten Situationen kann es wünschenswert sein, dass mehrere Fälle denselben Codeblock ausführen. Betrachten Sie beispielsweise Folgendes:
switch (ch) {
  case 'A':
  case 'B':
  case 'C':
    printf("Vowel\n");
    break;

  default:
    printf("Consonant\n");
}
Nach dem Login kopieren

Wenn das Eingabezeichen hier „A“, „B“ oder „C“ ist, sollte das Programm „Vokal“ ausgeben. Durch die Verwendung eines einzigen Codeblocks für diese Fälle kann Codeduplizierung vermieden werden und die Klarheit gewahrt bleiben.

  • Zusammengeführte Funktionalität: Manchmal teilen mehrere Fälle ähnliche Funktionen. Wenn die Codeblöcke für diese Fälle zusammengeführt werden, kann dies die Lesbarkeit und Wartbarkeit des Codes verbessern. Hier ist ein Beispiel:
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");
}
Nach dem Login kopieren

Hier verarbeiten die ersten drei Fälle niedrige Zahlen und führen daher denselben Codeblock aus.

Obwohl das Durchfallen als Programmier-Anti- angesehen wird In den meisten Fällen gibt es Fälle, in denen es sich als nützlich erweisen kann, wenn der Code gut dokumentiert ist und seine Auswirkungen gründlich verstanden werden.

Das obige ist der detaillierte Inhalt vonWarum fügt C nicht automatisch „break'-Anweisungen nach „case'-Anweisungen in „switch'-Anweisungen ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage