#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
的行为。
答案 0 :(得分:2)
请注意,if
不被视为循环。相反,它是一个决策结构。
此示例中唯一的循环是两个for
循环。 break
将停止执行最内层的for
循环。