#include<stdio.h>
main()
{
int i=1,k=0;
for(;i<6;) //第一次for循环i=1。第二次循环i=2
{
switch(i%3)
{
case 0:k++;
case 1:k++;break; //case2跳出switch循环
case 2:k++;continue; //case2继续switch循环
}
i+=1; //i自增为2
}
printf("%d\n",k);
}
如果我们通过修改程序可以显而易见找到进入死循环位于case2
#include<stdio.h>
main()
{
int i=1,k=0;
for(;i<6;) //第一次for循环i=1。第二次循环i=2
{
switch(i%3)
{
case 0:k++;printf("k=%d\n",k);
case 1:k++;printf("k=%d\n",k);break; //case2跳出switch循环
case 2:k++;printf("k=%d\n",k);if(k<10)continue; //case2继续switch循环
}
i+=1; //i自增为2
printf("i=%d\n",i);
}
}
运行结果: