一只高傲的鹤 2022-01-07 21:46 采纳率: 66.7%
浏览 53

break结束for语句内循环,外循环问题

一,break结束内循环如下代码1所示:

#include <stdio.h>

int main()
{
    int i, j;

    for (i = 0; i < 10; i++)
    {
        for (j = 0; j < 10;j++)
        {
            if (j == 3)
            {
                break;
            }
        }
    }
    printf("i = %d, j = %d \n", i, j);

    return 0;
}

运行结果如下图:

img

二,break结束内外循环如代码2所示

#include <stdio.h>

int main()
{
    int i, j;

    for (i = 0; i < 10; i++)
    {
        for (j = 0; j < 10;j++)
        {
            if (j == 3)
            {
                break; //(第一个break)
            }
        }
        if (j == 3)
        {
            break;//(第二个break)
        }
    }
    printf("i = %d, j = %d \n", i, j);

    return 0;
}

运行结果如下图所示:

img

三,break结束外循环如代码3所示:

#include <stdio.h>

int main()
{
    int i, j;

    for (i = 0; i < 10; i++)
    {
        for (j = 0; j < 10;j++)
        {
            if (j == 3)
            {
               
            }
        }
        if (j == 3)
        {
            break;
        }
    }
    printf("i = %d, j = %d \n", i, j);

    return 0;
}

运行结果如下图所示:

img

以上3串代码的结果都已显示。我不明白的是:

  1. 第3串代码的break为是什么没有截断第一个for,让i运行到了10?
  2. 如果第二个break不能截断第一个for,那为什么第二串代码中第二个break却可以结束第一个for?
  3. 说明上面问题之后,麻烦说一下代码2和代码3运行的细节过程,谢谢!因为初学所以想了解更细致一点。
    求有缘人详细解答一下!
  • 写回答

4条回答 默认 最新

  • fuill 2022-01-07 21:57
    关注

    第三个代码,执行完内循环的for,再执行下面的if

    评论

报告相同问题?

问题事件

  • 创建了问题 1月7日

悬赏问题

  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀
  • ¥15 mifare plus卡认证
  • ¥30 LSTM预测结果是一条直线
  • ¥15 stnodeeditor自定义控件
  • ¥15 SDO如何更改STM32的波特率