Springe zum Case-Label in der switch-Anweisung

Abdul Basit 12 Oktober 2023
  1. die switch-Anweisung in C++
  2. Korrigieren Sie den Fehler Jump to case label in der switch-Anweisung in C++
Springe zum Case-Label in der switch-Anweisung

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 dem switch-Wert verglichen.
  • Nach Auswertung des switch-Ausdrucks mit einer case-Anweisung wird der Codeblock nach dem übereinstimmenden case ausgeführt, wenn die Bedingung wahr ist.
  • Die Schlüsselwörter break und default sind bei der switch-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;
}

Verwandter Artikel - C++ Error