这不是我实际想要实现的具体问题,但是我发现我不知道该怎么做,所以我将举一个简单的例子来说明:
假设我们有一个包含while
语句的switch
循环,例如:
while(some_cond){
switch(some_var){
case 1:
foo();
break;
case 2:
bar();
break;
}
}
如果我们想要break
中的case 1
,我会怎么做?
我们不能break; break;
,因为第二个永远不会发生。
我们也无法在break
循环中有条件地执行while
* un *,因为这会在任何case
中发生。
除了if (some_var == 1) break;
循环中的while
,我们别无选择,或者将&& !flag)
追加到while
条件,并设置flag = 1
?
答案 0 :(得分:0)
您可以使用goto
(不要过于狂野goto
。
while ( ... ) {
switch( ... ) {
case ...:
goto exit_loop;
}
}
exit_loop: ;
答案 1 :(得分:0)
各种选择,大致有品味:
return
停止循环。while(1)
替换为while(looping)
并设置为false以停止循环。如果您需要跳过当前迭代的其余部分,请使用continue
。goto
跳过循环结束。 How bad can it be? try
块环绕循环,并throw
停止循环。答案 2 :(得分:0)
请在循环中使用修改过的变量。
bool shoulEnterLoop = true;
while(shoulEnterLoop ){
switch(some_var){
case 1:
if ( !foo() )
shoulEnterLoop = false;
break;
case 2:
bar();
break;
}
}
答案 3 :(得分:-1)
while(1){
switch(some_var){
case 1:
foo();
continue 2;
case 2:
bar();
break;
}
}
继续2将从2级封闭循环中找到你