Ako opraviť chybu „Inicializácia prechodu na označenie prípadu“ v C++

Ako Opravit Chybu Inicializacia Prechodu Na Oznacenie Pripadu V C



Príkaz switch je najlepšou alternatívou pre dlhý príkaz if-else-if, pretože znižuje dĺžku kódu a prináša lepšiu prehľadnosť. Hodnota sa vyhodnotí pomocou príkazu switch a testuje sa oproti hodnotám každého označenia prípadu. Ak sa nájde zhoda, kód sa spustí pred prestávkou, v opačnom prípade sa vykoná kód po „predvolenom nastavení“.

Čo spôsobuje chybu „Inicializácia prechodu na označenie prípadu“ v C++

Pri používaní príkazu switch je v C++ bežnou chybou, ktorú možno pozorovať, „Inicializácia prechodu na označenie prípadu“. Táto chyba sa zvyčajne objavuje v dôsledku nesprávnej deklarácie premennej v rámci označenia prípadu. Tu je príklad programu, ktorý demonštruje chybu „Inicializácia kríženia označenia prípadu“ v C++:







#include
#include
pomocou menného priestoru std;
void menu_display ( ) ;
int ponuka_volby ( ) ;
void get_two_operands ( int & n, int & m ) ;
int pridať ( int n, int m ) ;
int odčítať ( int n, int m ) ;


int main ( )
{
výber int;

robiť
{
menu_display ( ) ;
výber = ponuka_voľby ( ) ;
int x, y;
prepínač ( výber )
{
prípad 1 :

get_two_operands ( x, y ) ;
int súčet = pridať ( x, y ) ;
cout << X << '+' << a << ' = ' << súčet << endl;

prestávka ;

prípad 2 :

get_two_operands ( x, y ) ;

int dif = odčítať ( x, y ) ;
cout << X << '-' << a << ' = ' << dif << endl;

prestávka ;
predvolene:;
}

} zatiaľ čo ( výber ! = 3 ) ;

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

vrátiť 0 ;
}


void menu_display ( )
{
cout << endl;
cout << 'Základná kalkulačka' << endl;
cout << ' 1. Pridať (+) ' << endl;
cout << ' 2. Odčítať (-) ' << endl;
cout << '3. Odísť' << endl;

cout << endl;
}

int get_menu_choice ( )
{
int výber;
cout << 'Neplatná voľba Skúste to znova: ' ;
jedenie >> výber;

zatiaľ čo ( ( ( výber < 1 ) || ( výber > 3 ) ) && ( ! cin.fail ( ) ) )
{
cout << ': ' ;
jedenie >> výber;
}
ak ( cin.fail ( ) )
{
cout << 'Chyba ' << endl;
VÝCHOD ( 1 ) ;
}
vrátiť výber;
}

void get_two_operands ( int & n, int & m )
{
cout << 'Dajte dva operandy' << endl;
cout << 'Prvý operand: ' ;
jedenie >> n;
cout << 'Druhý operand: ' ;
jedenie >> m;

}


int pridať ( int n, int m )
{
vrátiť ( n + m ) ;
}

int odčítať ( int n, int m )
{
vrátiť ( n - m ) ;
}


Keď sa tento program spustí, vráti chybu „Jump to Case Label“. Toto je chyba kompilácie.



Táto chyba sa objavuje z dôvodu deklarácie premennej vo vnútri príkazu case bez uzatváracích zátvoriek. Puzdro je len štítok, takže nemá možnosť obmedziť dostupnosť parametrov napísaných pod ním. Keď sa vykoná vyššie uvedený kód, premenné prípadu 1 môžu byť prístupné prípadom 2 a budú sa javiť ako neinicializované, čo vedie k chybám.







Ako opraviť chybu „Inicializácia prechodu na označenie prípadu“ v C++

Túto chybu možno opraviť pomocou zátvoriek vo vnútri bloku prípadu, čím sa vytvorí uzavretý rozsah a s parametrami rôznych blokov prípadu sa nebude manipulovať.

Odladený kód

Toto je ladený kód pre vyššie uvedenú chybu. Chyba je opravená uzavretím údajov pod prípadmi v zátvorkách:



#include
#include
pomocou menného priestoru std;
void menu_display ( ) ;
int ponuka_volby ( ) ;
void get_two_operands ( int & n, int & m ) ;
int pridať ( int n, int m ) ;
int odčítať ( int n, int m ) ;


int main ( )
{
výber int;

robiť
{
menu_display ( ) ;
výber = ponuka_voľby ( ) ;
int x, y;
prepínač ( výber )
{
prípad 1 :
{
get_two_operands ( x, y ) ;
int súčet = pridať ( x, y ) ;
cout << X << '+' << a << ' = ' << súčet << endl;
}
prestávka ;
prípad 2 :
{
get_two_operands ( x, y ) ;
int dif = odčítať ( x, y ) ;
cout << X << '-' << a << ' = ' << dif << endl;
}
prestávka ;
predvolene:;
}

} zatiaľ čo ( výber ! = 3 ) ;

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

vrátiť 0 ;
}


void menu_display ( )
{
cout << endl;
cout << 'Základná kalkulačka' << endl;
cout << ' 1. Pridať (+) ' << endl;
cout << ' 2. Odčítať (-) ' << endl;
cout << '3. Odísť' << endl;
cout << endl;
}

int ponuka_volby ( )
{
výber int;
cout << 'Vyberte operáciu:' ;
jedenie >> výber;

zatiaľ čo ( ( ( výber < 1 ) || ( výber > 3 ) ) && ( ! cin.fail ( ) ) )
{
cout << 'Neplatná voľba Skúste to znova: ' ;
jedenie >> výber;
}
ak ( cin.fail ( ) )
{
cout << 'Chyba' << endl;
VÝCHOD ( 1 ) ;
}
vrátiť výber;
}

void get_two_operands ( int & n, int & m )
{
cout << 'Dajte dva operandy' << endl;
cout << 'Prvý operand: ' ;
jedenie >> n;
cout << 'Druhý operand: ' ;
jedenie >> m;

}


int pridať ( int n, int m )
{
vrátiť ( n + m ) ;
}

int odčítať ( int n, int m )
{
vrátiť ( n - m ) ;
}


Po použití uzatváracích zátvoriek v blokoch prípadu kódu bola chyba opravená a zobrazí sa výstup:

Záver

Príkaz switch je najlepšou alternatívou pre dlhý príkaz if-else-if, pretože znižuje dĺžku kódu a prináša lepšiu prehľadnosť. Pri používaní príkazu switch je v C++ bežnou chybou kompilácie, ktorú možno pozorovať, „Inicializácia prechodu na označenie prípadu“. Táto chyba sa zvyčajne objavuje v dôsledku nesprávnej deklarácie premennej v rámci označenia prípadu. Dá sa to opraviť použitím zátvoriek okolo údajov pod blokmi veľkých písmen.