break跳出语句的
int main(int argc,char *argv[])
{
int k=4,n;
for(n=0;n<k;n++)
{
if(n%2==0)
break;
k--;
}
printf("k=%d,n=%d",k,n);
return 0;
}
的运行结果为什么是k=4,n=0;不运行n++吗
0 % 2 == 0 ,后边的就不再运行
首先:你需要知道的是这里主要是理解break的含义---break的含义是跳出整个循环(同时你还记得continue的含义么---它是跳出本次循环)
其次:我们来看程序,开始执行main函数。
1 k=4,
2 for循环开始 n=0,n<k,成立
3 依次执行if语句,if语句里面的条件成立,则执行break
4 而break的含义是跳出整个循环,所以说执行了break语句之后,程序直接调到printf("k=%d,n=%d",k,n);
5 这就是为什么直接输出了 k=4,n=0
最后,还要 注意一点的是 continue的时候,结果是什么。比较continue和break的区别,能理解更透彻
for(n=0;n<k;n++)
{
if(n%2==0)
{
break;
}
else
{
k--;
}
}
调理清晰才能更直观理解。。。
当if(n%2==0)成立后,break语句会跳出for循环,执行for循环之后的语句,如果只想跳过当前值,将break改为continue,这样就是跳出本次循环,进入下次循环
要知道for循环的执行顺序,如:
for(表达式1;表达式2;表达式3)
{
代码段
}
则其执行顺序如下:
表达式1——>表达式2(如果条件成立,循环执行后面步骤,否则退出)——>代码段——表达式3——表达式2
for循环中的n++是在下一次循环的时候++,你可以试一下for(n=0;n<k;){n++;}