由于break语句只能影响它的最内层循环,要想立即从深层嵌套循环中退出,有哪些方法呢?
1、使用goto语句:
while(condition1) {
while(condition2) {
while(condition3) {
if(some disaster)
goto quit;
}
}
}
quit:;
要想在这种情况下避免使用goto语句,可以考虑以下两种方案:
2、设置状态标志:
当你希望退出所有循环时设置一个状态标志,但这个标志在每个循环中都必须进行测试:
enum{EXIT, OK}status;
...
status = OK;
while(status == OK && condition1) {
while(status == OK && condition2) {
while(condition3) {
if(some disaster)
status = EXIT;
break;
}
}
}
3、使用函数返回:
把所有的循环都放在一个单独的函数里,当灾难降临在最内层的循环的时候,可以使用return语句离开这个函数