Я сделал пример кода в с.
do
{switch(i)
{
case 1:
{
cout<< "1\n";
break;
}
case 2:
{
cout<< "1\n";
break;
}
case 3:
{
continue;
}}
}while (0);
Здесь, в этом коде, если значение i равно 3, тогда я хочу перезапустить цикл do while, что приведет к бесконечному циклу. Но, к сожалению, цикл не выполняется снова. Что будет причиной этого.?
Я проверил код сборки в Visual Studio того же кода и обнаружил, что в сборке нет оператора JMP для оператора продолжения внутри switch -case.
while (0)
означает, что он выпадет из нижней части петли. Даже если у вас есть continue
состояние восстановлено
Когда вы делаете continue
внутри do-while
цикл, он подскакивает при оценке внизу, что всегда ложно в вашем случае.
Другие ответы объясняют continue
но из ваших комментариев видно, что вы понимаете, как это работает.
если значение i равно 3, то я хочу перезапустить цикл do while, что приведет к бесконечному циклу
Код работает так, как вы его описали — он переходит в состояние «время» на i==3
, Разница лишь в том, что если вы хотите бесконечный цикл, вам нужно while(1)
не while(0)
,