break语句的执行只会导致其所在层的循环被中止。在一个嵌套的双重循环中,处于内层循环内的break被执行时,只会导致内层循环的中止,外层循环不受影响。

版权声明

本文可以在互联网上自由转载,但必须:注明出处(作者:海洋饼干叔叔)并包含指向本页面的链接。

本文不可以以纸质出版为目的进行改编、摘抄。

  我们通过下述示例来说明双重循环中内层break语句的执行效果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Project - DoubleFor
#include <iostream>
using namespace std;

int main()
{
for (int i=0;i<10;i++){ //i循环:第0行至第9行
for (int j=0;j<10;j++){ //j循环:第0列至第9列,但第i行最多输出10-i列
if (j>=(10-i))
break;
cout << "*";
}
cout << endl;
}

return 0;
}

上述程序的执行结果为:

1
2
3
4
5
6
7
8
9
10
**********
*********
********
*******
******
*****
****
***
**
*

  上述代码包含两个for循环,外层的i循环从0到9,内层的j循环也从0到9。如果删去代码第9 ~ 10行,程序将输出10行10列共10个*号,当内层j循环结束后,第13行会在行尾输出一个换行符。

第9~10行:对于第i行,程序仅允许输出10-i个*号。当超过数量,即j>=(10-i)时,执行break语句结束内层循环。

  下图展示了break语句执行后的程序跳转位置,如图所见,被终止的只是内层j循环,外层i循环将继续执行。

image-20221030204936247