Kako popraviti pogrešku 'Skok na oznaku velikih i malih slova pri inicijalizaciji' u C++

Kako Popraviti Pogresku Skok Na Oznaku Velikih I Malih Slova Pri Inicijalizaciji U C



Naredba switch najbolja je alternativa za dugu naredbu if-else-if, budući da smanjuje duljinu koda i donosi bolju jasnoću. Vrijednost se procjenjuje korištenjem naredbe switch i testira se u odnosu na vrijednosti svake oznake case. Ako se pronađe podudaranje, kod se izvršava prije prijeloma, u suprotnom, izvršava se kod nakon 'defaulta'.

Što uzrokuje pogrešku 'Jomp to Case Label Crosses Initialization' u C++

Dok koristite naredbu switch, u C++-u uobičajena pogreška koja se može primijetiti je 'Inicijalizacija skoka na oznaku velikih i malih slova'. Ova se pogreška obično pojavljuje zbog netočne deklaracije varijable unutar oznake case. Evo primjera programa za demonstraciju pogreške 'Skok na oznaku velikih i malih slova pri inicijalizaciji' u C++:







#include
#include
korištenje imenskog prostora std;
void menu_display ( ) ;
int izbor_izbornika ( ) ;
void get_two_operand ( int i n, int i m ) ;
int dodati ( int n, int m ) ;
int oduzimanje ( int n, int m ) ;


int glavni ( )
{
int izbor;

čini
{
prikaz_izbornika ( ) ;
odabir = izbornik_izbora ( ) ;
int x, y;
sklopka ( izbor )
{
slučaj 1 :

get_dva_operanda ( x, y ) ;
int iznos = dodati ( x,y ) ;
cout << x << '+' << i << ' = ' << iznos << endl;

pauza ;

slučaj 2 :

get_dva_operanda ( x,y ) ;

int dif = oduzeti ( x,y ) ;
cout << x << '-' << i << ' = ' << dif << endl;

pauza ;
zadano:;
}

} dok ( izbor ! = 3 ) ;

cout << 'Program prekinut' << endl;

povratak 0 ;
}


void menu_display ( )
{
cout << endl;
cout << 'Osnovni kalkulator' << endl;
cout << ' 1. Dodaj (+) ' << endl;
cout << ' 2. Oduzmi (-) ' << endl;
cout << '3. Izlaz' << endl;

cout << endl;
}

int get_menu_choice ( )
{
int izbor;
cout << 'Nevažeći izbor. Pokušaj ponovno: ' ;
jelo >> izbor;

dok ( ( ( izbor < 1 ) || ( izbor > 3 ) ) && ( ! cin.ne uspjeti ( ) ) )
{
cout << ':' ;
jelo >> izbor;
}
ako ( cin.ne uspjeti ( ) )
{
cout << 'Greška' << endl;
Izlaz ( 1 ) ;
}
povratak izbor;
}

void get_two_operand ( int i n, int i m )
{
cout << 'Daj dva operanda' << endl;
cout << 'Prvi operand: ' ;
jelo >> n;
cout << 'Drugi operand: ' ;
jelo >> m;

}


int dodati ( int n, int m )
{
povratak ( n + m ) ;
}

int oduzimanje ( int n, int m )
{
povratak ( n - m ) ;
}


Kada se ovaj program izvrši, vraća pogrešku 'Jump to Case Label'. Ovo je pogreška kompilacije.



Ova se pogreška pojavljuje zbog deklaracije varijable unutar naredbe case bez zagrada. Kućište je samo oznaka, tako da nema mogućnost ograničavanja dostupnosti parametara koji su ispod njega napisani. Kada se gornji kod izvrši, varijablama slučaja 1 može se pristupiti slučaju 2, a on će se pojaviti kao neinicijaliziran što dovodi do pogrešaka.







Kako popraviti pogrešku 'Skok na oznaku velikih i malih slova pri inicijalizaciji' u C++

Ova se pogreška može popraviti upotrebom zagrada unutar bloka slučaja, što će stvoriti zatvoreni opseg i neće se manipulirati parametrima različitih blokova slučaja.

Otklonjeni kod

Ovo je otklonjeni kôd za gornju pogrešku. Pogreška se ispravlja dodavanjem podataka ispod slučajeva unutar zagrada:



#include
#include
korištenje imenskog prostora std;
void menu_display ( ) ;
int izbor_izbornika ( ) ;
void get_two_operand ( int i n, int i m ) ;
int dodati ( int n, int m ) ;
int oduzimanje ( int n, int m ) ;


int glavni ( )
{
int izbor;

čini
{
prikaz_izbornika ( ) ;
odabir = izbornik_izbora ( ) ;
int x, y;
sklopka ( izbor )
{
slučaj 1 :
{
get_dva_operanda ( x,y ) ;
int iznos = dodati ( x,y ) ;
cout << x << '+' << i << ' = ' << iznos << endl;
}
pauza ;
slučaj 2 :
{
get_dva_operanda ( x, y ) ;
int dif = oduzeti ( x, y ) ;
cout << x << '-' << i << ' = ' << dif << endl;
}
pauza ;
zadano:;
}

} dok ( izbor ! = 3 ) ;

cout << 'Program prekinut' << endl;

povratak 0 ;
}


void menu_display ( )
{
cout << endl;
cout << 'Osnovni kalkulator' << endl;
cout << ' 1. Dodaj (+) ' << endl;
cout << ' 2. Oduzmi (-) ' << endl;
cout << '3. Izlaz' << endl;
cout << endl;
}

int izbor_izbornika ( )
{
int izbor;
cout << 'Odaberite operaciju:' ;
jelo >> izbor;

dok ( ( ( izbor < 1 ) || ( izbor > 3 ) ) && ( ! cin.ne uspjeti ( ) ) )
{
cout << 'Nevažeći izbor. Pokušaj ponovno: ' ;
jelo >> izbor;
}
ako ( cin.ne uspjeti ( ) )
{
cout << 'pogreška' << endl;
Izlaz ( 1 ) ;
}
povratak izbor;
}

void get_two_operand ( int i n, int i m )
{
cout << 'Daj dva operanda' << endl;
cout << 'Prvi operand: ' ;
jelo >> n;
cout << 'Drugi operand: ' ;
jelo >> m;

}


int dodati ( int n, int m )
{
povratak ( n + m ) ;
}

int oduzimanje ( int n, int m )
{
povratak ( n - m ) ;
}


Nakon upotrebe zagrada u blokovima case koda, pogreška je ispravljena i prikazan je izlaz:

Zaključak

Naredba switch najbolja je alternativa za dugu naredbu if-else-if, budući da smanjuje duljinu koda i donosi bolju jasnoću. Dok koristite naredbu switch, u C++-u uobičajena pogreška kompilacije koja se može uočiti je 'Inicijalizacija skoka na oznaku velikih i malih slova'. Ova se pogreška obično pojavljuje zbog netočne deklaracije varijable unutar oznake case. To se može popraviti korištenjem zagrada oko podataka ispod blokova slučajeva.