Heim > Backend-Entwicklung > C++ > Hauptteil

Warum tritt in Switch-Anweisungen der Fehler „Jump to Case Label' auf?

Linda Hamilton
Freigeben: 2024-10-29 04:19:29
Original
565 Leute haben es durchsucht

Why Does

Fehler beim Springen zur Fallbezeichnung in Switch-Anweisungen

Wenn der Kompilierungsfehler „Springe zur Fallbezeichnung“ auftritt, muss man die Switch-Anweisungen genau prüfen Struktur. Dieser Fehler tritt auf, wenn versucht wird, Variablen in einem Fall zu deklarieren, die sich auf nachfolgende Fälle erstrecken, ohne ein explizites Blocktrennzeichen zu verwenden, das durch geschweifte Klammern ({ }) gekennzeichnet ist.

Betrachten Sie beispielsweise den folgenden Code:

<code class="cpp">#include <iostream>
int main() 
{
    int choice;
    std::cin >> choice;
    switch(choice)
    {
      case 1:
        int i=0;
        break;
      case 2: // error here
        // Code relying on the existence of i
    }
}</code>
Nach dem Login kopieren

In diesem Beispiel ergibt sich das Problem aus der Deklaration von i in Fall 1. Während i in Fall 2 sichtbar ist, wird es nicht initialisiert. Dies liegt daran, dass der Initialisierungscode für jeden Fall spezifisch ist. Wenn die Auswahl also 2 ist, könnte die Verwendung von i im nachfolgenden Code zu unerwarteten Ergebnissen führen.

Um dieses Problem zu beheben, verwenden Sie für jeden Fall einen expliziten Block:

<code class="cpp">switch(choice)
{
  case 1:
    {
        int i=0;
        break;
    }
  case 2:
    {
        // Use of i only within this block
    }
}</code>
Nach dem Login kopieren

Alternativ: man kann eine goto-Anweisung verwenden, analog zur switch-Anweisung:

<code class="cpp">int main() {
    if(rand() % 2) // Toss a coin
        goto end;

    int i = 42;

  end:
    // Similar scope and initialization issues as with switch, but with goto
    std::cout << i;
}</code>
Nach dem Login kopieren

Im Wesentlichen stellt ein expliziter Block oder die sorgfältige Verwendung von goto sicher, dass Variablendeklarationen und Initialisierung auf die beabsichtigten Fälle beschränkt sind, wodurch fehlerhaftes Verhalten verhindert wird.

Das obige ist der detaillierte Inhalt vonWarum tritt in Switch-Anweisungen der Fehler „Jump to Case Label' auf?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!