Springe zum Case-Label in der switch-Anweisung
-
die
switch
-Anweisung in C++ -
Korrigieren Sie den Fehler
Jump to case label
in derswitch
-Anweisung in C++
Dieser Artikel behandelt die Verwendung von switch
-Anweisungen in C++. Außerdem werden Fehler besprochen, die bei der Verwendung der switch
-Anweisung auftreten können, einschließlich des Jump to case label
-Fehlers.
die switch
-Anweisung in C++
Die switch
-Anweisung wertet einen gegebenen booleschen oder ganzzahligen Ausdruck aus und führt die Anweisung(en) aus, die den Fällen
zugeordnet sind, basierend auf der Auswertung des gegebenen Ausdrucks. Es ist die beste Alternative zu den langen if-else-if
-Anweisungen, da es die Codelänge reduziert und die Übersichtlichkeit erhöht.
In C/C++ wird die folgende Syntax für die switch
-Anweisung verwendet, um die Auswertung durchzuführen.
Syntax:
switch (exp) {
case a:
// Block of code
break;
case b:
// Block of code
break;
default:
// Block of code
}
Die switch
-Anweisung funktioniert wie folgt:
- Der Ausdruck wird einmal in der
switch
-Anweisung ausgewertet. - Der
case
-Wert wird mit demswitch
-Wert verglichen. - Nach Auswertung des
switch
-Ausdrucks mit einercase
-Anweisung wird der Codeblock nach dem übereinstimmendencase
ausgeführt, wenn die Bedingung wahr ist. - Die Schlüsselwörter
break
unddefault
sind bei derswitch
-Anweisung optional. Wir werden diese am Ende dieses Tutorials ausführlich besprechen.
Angenommen, wir möchten den Wochentagsnamen aus der Wochentagsnummer berechnen.
Beispielcode:
#include <iostream>
using namespace std;
int main() {
int weak_day = 3;
switch (weak_day) {
case 1:
cout << "Monday";
break;
case 2:
cout << "Tuesday";
break;
case 3:
cout << "Wednesday";
break;
case 4:
cout << "Thursday";
break;
case 5:
cout << "Friday";
break;
case 6:
cout << "Saturday";
break;
case 7:
cout << "Sunday";
break;
default:
cout << "Invalid input";
}
}
Ausgang:
Wednesday
das Schlüsselwort break
Das Schlüsselwort break
wird mit einer switch
-Anweisung verwendet, um die verbleibenden Fälle des switch
-Körpers zu überspringen, nachdem ein bestimmter case
erfüllt ist.
Wenn im obigen Beispiel die switch
-Anweisung ausgewertet wird und die Kriterien in case 3
erfüllt, überspringt sie den verbleibenden Codeblock des switch
-Körpers aufgrund des break;
Stellungnahme.
das Schlüsselwort default
Das Schlüsselwort default
wird mit der switch
-Anweisung verwendet, um einen bestimmten Codeblock auszuführen, wenn keiner der Fälle in der gegebenen switch
-Anweisung zutrifft.
Sehen wir uns das folgende Beispiel an, das die Verwendung des Schlüsselworts default
in der Anweisung switch
demonstriert.
Beispielcode:
#include <iostream>
using namespace std;
int main() {
int a = 4;
switch (a) {
case 6:
cout << "Value of a is 6";
break;
case 7:
cout << "Value of a is 7";
break;
default:
cout << "The number is other than 6 or 7";
}
}
Ausgang:
The number is other than 6 or 7
In diesem Beispiel haben wir den Wert der Integer-Variablen als 4 angegeben, aber keiner der Fälle wird die gegebene Bedingung während der Ausführung erfüllen. Daher wird der default
-Block ausgeführt.
Korrigieren Sie den Fehler Jump to case label
in der switch
-Anweisung in C++
Ein häufiger Fehler, der bei der Verwendung der switch
-Anweisung auftreten kann, ist ein Jump to case label
-Fehler. Der Fehler tritt auf, wenn eine Deklaration innerhalb/unter einem case
-Label gemacht wird.
Sehen wir uns das folgende Beispiel an, um das Problem zu verstehen:
#include <iostream>
using namespace std;
int main() {
int a = 1;
switch (a) {
case 1:
int i = 66;
cout << i;
break;
case 2:
cout << i * 3;
break;
default:
cout << "Looking forward to the Weekend";
}
return 0;
}
Im obigen Beispiel, wenn wir i=66
in Fall 1:
initialisieren und den Code ausführen. Der Code generiert einen Fehler Jump to case label
, da der Wert von i
für die anderen Fälle sichtbar ist.
Ein case
ist nur ein Label und schränkt daher den Umfang des daneben geschriebenen Codes nicht ein. Wenn also Fall 2
während der Ausführung ausgeführt wird, ist i
eine nicht initialisierte Variable.
Eine stark typisierte Sprache wie C++ wird dies also niemals zulassen. Daher wird ein Kompilierzeitfehler generiert.
Die Bereichstrennzeichen {}
in Fall 1
können dieses Bereichsproblem überwinden und helfen, den Code fehlerfrei auszuführen.
#include <iostream>
using namespace std;
int main() {
int a = 1;
switch (a) {
case 1: {
int i = 66;
cout << i;
break;
}
case 2:
cout << "value does not exist";
break;
default:
cout << "Looking forward to the Weekend";
}
return 0;
}