当中断嵌套循环时会发生什么?
假设有以下代码:
for(int x = 0; x < 10; x++)
{
do {
if(x == 4)
break;
x++;
} while(x != 1);
}遇到break语句时,哪个循环将退出,是for循环还是do while循环?
发布于 2012-08-31 22:06:56
break总是会中断最里面的循环。
6.8.6.3
break语句终止最小的封闭switch或迭代语句的执行。
如果您想要打破这两个循环,请在for后面使用标签,并使用goto进行跳转。
发布于 2012-08-31 22:16:32
或者,如果不想使用goto,也可以使用标志
int flag = 0;
for(int x = 0; x < 10; x++)
{
do {
if(x == 4) {
flag = 1;
break;
}
x++;
} while(x != 1);
if(flag)
break; // To break the for loop
}发布于 2012-08-31 22:08:16
break将终止包含Break的最近/最里面的循环。在您的示例中,break将终止do-while,并且控制跳回到for()循环,并简单地启动for()的下一次迭代。
但是,由于您同时在do()和for()循环中修改了x,因此执行起来会有点不稳定。一旦外部X达到5,你就会产生一个无限循环。
https://stackoverflow.com/questions/12217014
复制相似问题