while (a<b) case 4: {a = a+5;} break;
Эта строка кода находится внутри оператора switch
. Первое, что делает switch
, - это переходит на метку case
4
.
. Но метка этого случая через некоторое время l oop. В конце инструкции a=a+5
программа возвращается к инструкции while.
Программа выполняет goto
внутри while
l oop.
goto
операторы не приветствуются, если только в пределах switch
блоков с идеально читаемыми конструкциями, таких как:
switch(a)
{
case 1: a = a*10; break;
case 2: a = a*10; break;
case 5: a = a*10; break;
default:
b = a*10;break;
}
Если вы пытаетесь быть умным, пропустите break
, вставляя инструкции между break
и следующим case
... вы должны знать, что вы делаете. И кому-то другому, читающему код, может быть трудно понять его.
Это также подразумевает, что вы не будете прыгать в середине конструкции oop или подобных странных вещей.
Если вы столкнетесь такой код в реальной жизни, перепишите его. Эквивалент будет использовать инструкцию do
... while
(первый тест пропущен, мы можем ввести l oop, даже если a<b
:
case 4: do {a = a+5;} while (a<b); break;
Вы получите тот же результат с этим кодом, за исключением того, что он компилируется без предупреждений, и все понимают, что он делает.