-4
#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。这是(当嵌套在 3 个循环中时会破坏 3 个嵌套循环)的常规行为break,还是由于循环的组合而发生?如果我使用其他可能的循环组合会发生什么?请解释该break语句与其他循环的多种组合一起使用时的行为。请解释行为switch

4

1 回答 1

2

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

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

于 2014-09-07T05:58:08.587 回答