C语言的代码问题

来源:百度知道 编辑:UC知道 时间:2024/06/29 00:43:10
先给代码:int x,i;
for(i=1,x=1;i<=50;i++)
{if(x>=10)
break;
if(x%2==1)
{x+=5;continue;}
x-=3;
}
printf("%d\n",i);

虽然很简单,但是我有些基础忘了。我想问的是不是说执行了continue语句就结束本次循环了,然后跳过后面的执行语句吗?但是为什么程序的结果会是6,我的问题其实就是为什么i还会自增,i的自增语句其实不是在continue语句的下一句吗?不是跳过了?那如果是break语句也一样是终端循环后,如果FOR语句后面有写变量自增语句,执行了break语句后,也一样自增吗?请说一下看法。。。。

你们老师是不是今天布置的啊,我刚回答过这个,哈哈
continue是下面的循环体里面的代码直接跳过,继续下一次循环。
i自增是写在FOR循环括号里面的第三个条件,那个条件是在一次循环之后,中括号里面的东西都运行完了,运行这个条件

break直接就跳出循环体,和循环有关的东西不会再继续做下去的

continue是跳过后面的语句然后执行循环
第一次if(x%2==1)成立,x变成6,继续循环
第二次if(x%2==1)不成立,执行x-=3,x变成3,继续循环
第三次if(x%2==1)成立,x变成8,继续循环
第四次if(x%2==1)不成立,执行x-=3,x变成5,继续循环
第五次if(x%2==1)成立,x变成10,继续循环
第六次if(x>=10)成立,退出循环
所以i=6,结果等于6
自己单步调试看下

continue语句只结束本次循环,而不是终止整个循环的执行。而break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。