Heim >Java >javaLernprogramm >Warum fügt C nicht automatisch „break'-Anweisungen nach „case'-Anweisungen in „switch'-Anweisungen ein?
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:
switch (ch) { case 'A': case 'B': case 'C': printf("Vowel\n"); break; default: printf("Consonant\n"); }
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.
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"); }
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!