break语句的行为

时间:2014-09-07 05:54:48

标签: c loops break control-structure

#include<stdio.h>
#include<conio.h>

void main()
{
    int i, j, k, l;
    i = j = 0;
    clrscr();

    for(k = 0; k < 3; k++)
    {
        printf("Flag A\t");

        for(l = 0; l < 2; l++)         
        { 
            printf("Flag B\t");
            if(i == 5)
            {
                printf("Flag C\t");

                if(j == 5)
                {
                    printf("Flag D\n");
                    break;
                }
            }
            i++;
            j++;
        }
    }

    printf("Value of i=%d,j=%d,k=%d,l=%d", i, j, k, l);
    getch();
}

当我跟踪上面代码的输出时,它是:

Flag A Flag B Flag B Flag A Flag B Flag B Flag A Flag B Flag B Flag C Flag D 

values of i=5 j=5 k=3 l=1

我手动得到相同的答案。另外,我的问题是:当我跟踪输出时,当i = 5且j = 5时发生中断条件。那时,控件会中断两个if循环和l for循环,并从k for循环的下一次迭代开始。这是break的常规行为(当它嵌套在3个循环中时会破解3个嵌套循环),还是由于循环的组合而发生?如果我使用其他可能的循环组合会发生什么?请解释break语句在与其他循环的多种组合一起使用时的行为。请解释switch的行为。

1 个答案:

答案 0 :(得分:2)

请注意,if不被视为循环。相反,它是一个决策结构。

此示例中唯一的循环是两个for循环。 break将停止执行最内层的for循环。