C++ switch-Anweisung
In C++ wird die switch-Anweisung verwendet, um abhängig von verschiedenen Bedingungen unterschiedliche Codeblöcke auszuführen. Sie wird oft verwendet, um eine Reihe von if-else-Anweisungen zu ersetzen, wodurch der Code klarer und leichter lesbar wird.
aswitchDie Anweisung ermöglicht es, eine Variable auf Gleichheit mit mehreren Werten zu prüfen. Jeder Wert wird als case bezeichnet, und die getestete Variable wird gegen jedenswitch caseeiner Prüfung unterzogen.
Syntax
In C++switchDie Syntax der Anweisung:
switchDie Anweisung muss die folgenden Regeln befolgen:
- switchin der AnweisungAusdruckmuss ein Ganzzahl- oder Enumerationstyp sein oder ein Klassentyp, der eine einzige Konvertierungsfunktion besitzt, die ihn in einen Ganzzahl- oder Enumerationstyp konvertiert.
- Eine switch-Anweisung kann beliebig viele case-Anweisungen enthalten. Auf jedes case folgt ein zu vergleichender Wert und ein Doppelpunkt.
- des caseconstant-expressionmuss denselben Datentyp wie die Variable in der switch-Anweisung haben und muss eine Konstante oder ein Literal sein.
- Wenn die getestete Variable gleich der Konstante im case ist, werden die auf das case folgenden Anweisungen ausgeführt, bis einebreak-Anweisung erreicht wird.
- Wenn einebreak-Anweisung angetroffen wird, wird die switch-Anweisung beendet, und der Kontrollfluss springt zur nächsten Zeile nach der switch-Anweisung.
- Nicht jedes case mussbreakenthalten. Wenn die case-Anweisung keinbreakenthält, wird der Kontrollflussfortfahrenmit nachfolgenden cases, bis ein break angetroffen wird.
- aswitchDie Anweisung kann einen optionalendefaultcase haben, der am Ende des switch erscheint. Der default-Fall kann verwendet werden, um eine Aufgabe auszuführen, wenn keiner der obigen Fälle zutrifft. Im default-Fall ist diebreakAnweisung nicht erforderlich.
Flussdiagramm
Beispiel
Beispiel
int main() {
int day = 4;
switch (day) {
case 1:
std::cout << "Montag" << std::endl;
break;
case 2:
std::cout << "Dienstag" << std::endl;
break;
case 3:
std::cout << "Mittwoch" << std::endl;
break;
case 4:
std::cout << "Donnerstag" << std::endl;
break;
case 5:
std::cout << "Freitag" << std::endl;
break;
case 6:
std::cout << "Samstag" << std::endl;
break;
case 7:
std::cout << "Sonntag" << std::endl;
break;
default:
std::cout << "Ungültiger Tag" << std::endl;
}
return 0;
}
Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:
Thursday
Der char-Typ in switch-Anweisungen:
Beispiel 2
Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:
您通过了 您的成绩是 D
Notizen:
breakAnweisung:eachcaseam Ende der AnweisungbreakDie Anweisung ist notwendig, um auszubrechen ausswitchder Anweisung. Wenn sie fehltbreak, wird das Programm weiterhin die nächste ausführencase, dies wird als "fall-through" bezeichnet.defaultAnweisung:defaultDie Anweisung ist optional, aber normalerweise in allencasewenn keiner von ihnen übereinstimmt, wird sie verwendet, um alle nicht aufgeführten Fälle zu behandeln.- Ausdruckstyp:
switchDer Ausdruck ist normalerweise ein Ganzzahl- oder Aufzählungstyp; Gleitkomma- und String-Typen sind nicht möglich.
Manchmal verwenden wir absichtlich Fall-Through. Im folgenden Code wird derselbe Codeblock ausgeführt, wenn number 2 oder 3 ist.
Beispiel
int main() {
int number = 2;
switch (number) {
case 1:
std::cout << "Number is 1" << std::endl;
break;
case 2:
case 3:
std::cout << "Number is 2 or 3" << std::endl;
break;
default:
std::cout << "Number is not 1, 2, or 3" << std::endl;
}
return 0;
}
Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:
Number is 2 or 3Weitere Erweiterungen