请问以下几次循环怎么执行?(语言-c++)

img


请问这几次循环怎么执行?
break跳出内循环后再次循环的n还是2吗?


这几次循环的执行过程如下:
c++
for (int i = 0; i < 3; ++i) {
    for (int j = 0; j < 2; ++j) {
        if (j == 1) break;
        cout << i << " " << j << endl;
    }
}
输出:
0 0
2 0
解析:
i = 0, j = 0, 打印,j++,j != 1,继续
i = 0, j = 1, break跳出内层循环
i++, i = 1, 内层循环重新开始,j = 0
i = 1, j = 0, 打印,j++,j != 1,继续
i = 1, j = 1, break跳出内层循环
i++, i = 2, 内层循环重新开始,j = 0
i = 2, j = 0, 打印 
可以看出,break跳出内层循环后,外层循环的变量i还是保持不变,内层循环的变量j会重新开始从0开始。
所以上面代码的输出是:
0 0
1 0
2 0
而不是:
0 0
2 0

break后,外层循环检查循环条件,满足条件继续执行,里层循环重新初始n=2

第一次跳出循环时,n=3,后面几次都跟具体值有关!

  • 这篇博客: C语言break精解中的 是什么? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •         1,"break"是C语言中的关键字

            2,"break"词语解释是:跳出当前循环

                    跳出当前循环指的是:执行for、while、do while 循环时,满足一定条件后立即终止该循环。 

            3,注意点:

                    ①break语句对if-else的条件语句不起作用。

                    ②在多层循环中,一个break语句只向外跳一层。

  • 以下回答由chatgpt基于相关博客总结生成:

    根据参考资料中的信息,break语句可以用于终止循环语句,因此在下列循环中,当break语句跳出内层循环后,外层循环的变量n会保持为2:

    for (int n = 1; n <= 3; n++) {
        for (int i = 1; i <= 3; i++) {
            if (i == 2) {
                break;
            }
            std::cout << "i " << i << " n " << n << std::endl;
        }
        std::cout << "out of inner loop " << "n " << n << std::endl;
    }
    

    具体执行过程如下:

    1. 当n等于1时,内层循环会执行两次,而break语句在第二次执行时会使得内层循环跳出,变量i的值为2,而外层循环的变量n的值仍为1。
    2. 当n等于2时,内层循环同样会执行两次,而break语句在第二次执行时会使得内层循环跳出,变量i的值为2,而外层循环的变量n的值仍为2。
    3. 当n等于3时,内层循环同样会执行两次,而break语句在第二次执行时会使得内层循环跳出,变量i的值为2,而外层循环的变量n的值仍为3。

    因此,在循环嵌套的情况下,break语句只能跳出内层循环而不能跳出外层循环,外层循环的变量n的值会保持不变。