我有以下代码:
void takeOrder(void)
{
int stop = 0;
while(stop != 1)
{
printf("What is your order?\n");
printf("%c - fruitShake\n%c - milkShake\n", FRUIT_SHAKE_CHOICE, MILK_SHAKE_CHOICE);
scanf("%c", &typeChoice);
if(typeChoice != FRUIT_SHAKE_CHOICE || typeChoice != MILK_SHAKE_CHOICE)
{
printf("***Error! Wrong type***");
stop = 1;
}
//more code below
}
我试图用标志“停止”退出 while 循环,但它不起作用,它只是继续执行下面的其余代码。 有什么方法可以在不使用 break 的情况下使用标志退出这个 while 循环吗?
最佳答案
您可以通过多种方式实现,所有这些方式都比使用 break
差很多:
- 您可以添加
else
并增加//more code
部分的代码嵌套,或者 - 您可以设置变量并使用
continue
而不是break
来混淆您的读者,或者 - 您可以添加标签并使用
goto
来激怒您的同事
最好的方法是使用 break
,并完全删除 stop
变量,将其替换为“永远”循环:
for (;;) {
...
if (condition) {
break;
}
...
}
在三个内置循环都不适合你的情况下,这种结构是惯用的,即当决定中断或继续是在循环的中间而不是循环的顶部时(如在 for
和 while
循环中)或循环底部(如在 do
/while
循环中) .
注意:设置变量时代码没有结束循环的原因是没有连续检查循环条件。相反,它会在每次迭代开始前检查一次。之后,条件可能会在循环体内的任何一点变得无效。
关于c - 在 C 中不中断地退出 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47596596/