Jak opravit chybu „Inicializace přechodu na štítek případu“ v C++

Jak Opravit Chybu Inicializace Prechodu Na Stitek Pripadu V C



Příkaz switch je nejlepší alternativou pro dlouhý příkaz if-else-if, protože snižuje délku kódu a přináší lepší přehlednost. Hodnota je vyhodnocena pomocí příkazu switch a je testována proti hodnotám každého případu. Pokud je nalezena shoda, kód se spustí před přestávkou, v opačném případě se spustí kód po „výchozím“.

Co způsobuje chybu „Inicializace přechodu na štítek případu“ v C++

Při použití příkazu switch je v C++ běžnou chybou, kterou lze pozorovat, „Inicializace přechodu na označení případu“. Tato chyba se obvykle objevuje kvůli nesprávné deklaraci proměnné v popisku případu. Zde je ukázkový program, který demonstruje chybu „Inicializace přechodu na štítek případu“ v C++:







#include
#include
pomocí jmenného prostoru std;
void menu_display ( ) ;
int volba_menu ( ) ;
void get_two_operands ( int & n, int & m ) ;
int přidat ( int n, int m ) ;
int odečíst ( int n, int m ) ;


int main ( )
{
výběr int;

dělat
{
menu_display ( ) ;
výběr = nabídka_volby ( ) ;
int x, y;
přepínač ( výběr )
{
pouzdro 1 :

získat_dva_operandy ( x, y ) ;
int součet = přidat ( x, y ) ;
cout << X << '+' << a << ' = ' << součet << endl;

přestávka ;

pouzdro 2 :

získat_dva_operandy ( x, y ) ;

int dif = odečíst ( x, y ) ;
cout << X << '-' << a << ' = ' << dif << endl;

přestávka ;
výchozí:;
}

} zatímco ( výběr ! = 3 ) ;

cout << 'Program ukončen' << endl;

vrátit se 0 ;
}


void menu_display ( )
{
cout << endl;
cout << 'Základní kalkulačka' << endl;
cout << ' 1. Přidat (+) ' << endl;
cout << ' 2. Odečíst (-) ' << endl;
cout << '3. Konec' << endl;

cout << endl;
}

int get_menu_choice ( )
{
int volba;
cout << 'Neplatná volba Zkuste to znovu:' ;
jíst >> výběr;

zatímco ( ( ( výběr < 1 ) || ( výběr > 3 ) ) && ( ! cin.selhat ( ) ) )
{
cout << ':' ;
jíst >> výběr;
}
-li ( cin.selhat ( ) )
{
cout << 'chyba' << endl;
výstup ( 1 ) ;
}
vrátit se výběr;
}

void get_two_operands ( int & n, int & m )
{
cout << 'Dejte dva operandy' << endl;
cout << 'První operand:' ;
jíst >> n;
cout << 'Druhý operand:' ;
jíst >> m;

}


int přidat ( int n, int m )
{
vrátit se ( n + m ) ;
}

int odečíst ( int n, int m )
{
vrátit se ( n - m ) ;
}


Když je tento program spuštěn, vrací chybu „Přejít na označení případu“. Toto je chyba kompilace.



Tato chyba se objevuje kvůli deklaraci proměnné uvnitř příkazu case bez uzavřených závorek. Pouzdro je pouze štítek, takže nemá možnost omezit dostupnost parametrů zapsaných pod ním. Když je výše uvedený kód spuštěn, k proměnným případu 1 může přistupovat případ 2 a bude se jevit jako neinicializované, což vede k chybám.







Jak opravit chybu „Inicializace přechodu na štítek případu“ v C++

Tuto chybu lze opravit pomocí závorek uvnitř bloku případu, což vytvoří uzavřený rozsah a parametry různých bloků případu nebudou manipulovány.

Odladěný kód

Toto je laděný kód pro výše uvedenou chybu. Chyba je opravena uzavřením dat pod případy v závorkách:



#include
#include
pomocí jmenného prostoru std;
void menu_display ( ) ;
int volba_menu ( ) ;
void get_two_operands ( int & n, int & m ) ;
int přidat ( int n, int m ) ;
int odečíst ( int n, int m ) ;


int main ( )
{
výběr int;

dělat
{
menu_display ( ) ;
výběr = nabídka_volby ( ) ;
int x, y;
přepínač ( výběr )
{
pouzdro 1 :
{
získat_dva_operandy ( x, y ) ;
int součet = přidat ( x, y ) ;
cout << X << '+' << a << ' = ' << součet << endl;
}
přestávka ;
pouzdro 2 :
{
získat_dva_operandy ( x, y ) ;
int dif = odečíst ( x, y ) ;
cout << X << '-' << a << ' = ' << dif << endl;
}
přestávka ;
výchozí:;
}

} zatímco ( výběr ! = 3 ) ;

cout << 'Program ukončen' << endl;

vrátit se 0 ;
}


void menu_display ( )
{
cout << endl;
cout << 'Základní kalkulačka' << endl;
cout << ' 1. Přidat (+) ' << endl;
cout << ' 2. Odečíst (-) ' << endl;
cout << '3. Konec' << endl;
cout << endl;
}

int volba_menu ( )
{
výběr int;
cout << 'Vyberte operaci:' ;
jíst >> výběr;

zatímco ( ( ( výběr < 1 ) || ( výběr > 3 ) ) && ( ! cin.selhat ( ) ) )
{
cout << 'Neplatná volba Zkuste to znovu:' ;
jíst >> výběr;
}
-li ( cin.selhat ( ) )
{
cout << 'Chyba' << endl;
výstup ( 1 ) ;
}
vrátit se výběr;
}

void get_two_operands ( int & n, int & m )
{
cout << 'Dejte dva operandy' << endl;
cout << 'První operand:' ;
jíst >> n;
cout << 'Druhý operand:' ;
jíst >> m;

}


int přidat ( int n, int m )
{
vrátit se ( n + m ) ;
}

int odečíst ( int n, int m )
{
vrátit se ( n - m ) ;
}


Po použití uzavíracích závorek v blocích case kódu byla chyba opravena a zobrazí se výstup:

Závěr

Příkaz switch je nejlepší alternativou pro dlouhý příkaz if-else-if, protože snižuje délku kódu a přináší lepší přehlednost. Při použití příkazu switch je v C++ běžnou chybou kompilace, kterou lze pozorovat, „Inicializace přechodu na označení případu“. Tato chyba se obvykle objevuje kvůli nesprávné deklaraci proměnné v popisku případu. To lze opravit použitím závorek kolem dat pod bloky případu.