Како да поправите грешку „Јомп то Цасе Лабел Цроссес Инитиализатион“ у Ц++

Kako Da Popravite Gresku Jomp To Case Label Crosses Initialization U C



Наредба свитцх је најбоља алтернатива за дугу иф-елсе-иф наредбу, јер смањује дужину кода и доноси бољу јасноћу. Вредност се процењује помоћу наредбе свитцх и тестира се у односу на вредности сваке ознаке случаја. Ако се пронађе подударање, код се извршава пре прекида, у супротном извршава код након „подразумеваног“.

Шта узрокује грешку „Јомп то Цасе Лабел Цроссес Инитиализатион“ у Ц++

Док користите наредбу свитцх, у Ц++ уобичајена грешка која се може приметити је „Јомп то Цасе Лабел Цроссес Инитиализатион“. Ова грешка се обично појављује због нетачне декларације променљиве унутар ознаке случаја. Ево примера програма за демонстрирање грешке „Јумп то Цасе Лабел Цроссес Инитиализатион“ у Ц++:







#инцлуде <иостреам>
#инцлуде <цматх>
користећи простор имена стд;
воид мену_дисплаи ( ) ;
инт избор_мени ( ) ;
воид гет_тво_операндс ( инт & н, инт & м ) ;
инт адд ( инт н, инт м ) ;
инт субтрацт ( инт н, инт м ) ;


инт маин ( )
{
инт селецтион;

урадите
{
мену_дисплаи ( ) ;
избор = избор_мени ( ) ;
инт к, и;
прекидач ( селекција )
{
случај 1 :

гет_тво_операндс ( к, и ) ;
инт сум = додати ( к,и ) ;
цоут << Икс << '+' << и << ' = ' << сум << ендл;

пауза ;

случај 2 :

гет_тво_операндс ( к, и ) ;

инт дифф = одузети ( к,и ) ;
цоут << Икс << '-' << и << ' = ' << дифф << ендл;

пауза ;
Уобичајено:;
}

} док ( селекција ! = 3 ) ;

цоут << „Програм прекинут“ << ендл;

повратак 0 ;
}


воид мену_дисплаи ( )
{
цоут << ендл;
цоут << 'Основни калкулатор' << ендл;
цоут << ' 1. Додај (+) ' << ендл;
цоут << ' 2. Одузми (-) ' << ендл;
цоут << ' 3. Изађи' << ендл;

цоут << ендл;
}

инт гет_мену_цхоице ( )
{
инт избор;
цоут << „Неважећи избор Покушајте поново:“ ;
једење >> селекција;

док ( ( ( селекција < 1 ) || ( селекција > 3 ) ) && ( ! цин.фаил ( ) ) )
{
цоут << ': ' ;
једење >> селекција;
}
ако ( цин.фаил ( ) )
{
цоут << 'Грешка' << ендл;
излаз ( 1 ) ;
}
повратак селекција;
}

воид гет_тво_операндс ( инт & н, инт & м )
{
цоут << 'Дај два операнда' << ендл;
цоут << 'Први операнд:' ;
једење >> н;
цоут << 'Други операнд: ' ;
једење >> м;

}


инт адд ( инт н, инт м )
{
повратак ( н + м ) ;
}

инт субтрацт ( инт н, инт м )
{
повратак ( н - м ) ;
}


Када се овај програм изврши, враћа грешку „Јумп то Цасе Лабел“. Ово је грешка у компилацији.



Ова грешка се појављује због декларације променљиве унутар исказа цасе без заграда. Случај је само ознака, тако да нема могућност да ограничи доступност параметара написаних испод. Када се изврши горњи код, променљивама случаја 1 може се приступити у случају 2, и он ће се појавити као неиницијализован што доводи до грешака.







Како да поправите грешку „Јомп то Цасе Лабел Цроссес Инитиализатион“ у Ц++

Ова грешка се може поправити коришћењем заграда унутар блока случаја, што ће створити затворени опсег и параметри различитих блокова случаја неће бити манипулисани.

Дебуггед Цоде

Ово је отклоњени код за горњу грешку. Грешка се отклања тако што се подаци стављају под случајеве у заградама:



#инцлуде <иостреам>
#инцлуде <цматх>
користећи простор имена стд;
воид мену_дисплаи ( ) ;
инт избор_мени ( ) ;
воид гет_тво_операндс ( инт & н, инт & м ) ;
инт адд ( инт н, инт м ) ;
инт субтрацт ( инт н, инт м ) ;


инт маин ( )
{
инт селецтион;

урадите
{
мену_дисплаи ( ) ;
избор = избор_мени ( ) ;
инт к, и;
прекидач ( селекција )
{
случај 1 :
{
гет_тво_операндс ( к,и ) ;
инт сум = додати ( к,и ) ;
цоут << Икс << '+' << и << ' = ' << сум << ендл;
}
пауза ;
случај 2 :
{
гет_тво_операндс ( к,и ) ;
инт дифф = одузети ( к,и ) ;
цоут << Икс << '-' << и << ' = ' << дифф << ендл;
}
пауза ;
Уобичајено:;
}

} док ( селекција ! = 3 ) ;

цоут << „Програм прекинут“ << ендл;

повратак 0 ;
}


воид мену_дисплаи ( )
{
цоут << ендл;
цоут << 'Основни калкулатор' << ендл;
цоут << ' 1. Додај (+) ' << ендл;
цоут << ' 2. Одузми (-) ' << ендл;
цоут << ' 3. Изађи' << ендл;
цоут << ендл;
}

инт избор_мени ( )
{
инт селецтион;
цоут << „Изаберите операцију:“ ;
једење >> селекција;

док ( ( ( селекција < 1 ) || ( селекција > 3 ) ) && ( ! цин.фаил ( ) ) )
{
цоут << „Неважећи избор Покушајте поново:“ ;
једење >> селекција;
}
ако ( цин.фаил ( ) )
{
цоут << 'Грешка' << ендл;
излаз ( 1 ) ;
}
повратак селекција;
}

воид гет_тво_операндс ( инт & н, инт & м )
{
цоут << 'Дај два операнда' << ендл;
цоут << 'Први операнд:' ;
једење >> н;
цоут << 'Други операнд: ' ;
једење >> м;

}


инт адд ( инт н, инт м )
{
повратак ( н + м ) ;
}

инт субтрацт ( инт н, инт м )
{
повратак ( н - м ) ;
}


Након употребе заграда у блоковима кода, грешка је исправљена и излаз је приказан:

Закључак

Наредба свитцх је најбоља алтернатива за дугу иф-елсе-иф наредбу, јер смањује дужину кода и доноси бољу јасноћу. Док користите наредбу свитцх, у Ц++ уобичајена грешка при компилацији која се може приметити је „Јумп то Цасе Лабел Цроссес Инитиализатион“. Ова грешка се обично појављује због нетачне декларације променљиве унутар ознаке случаја. Ово се може поправити коришћењем заграда које окружују податке испод блокова случаја.