break&continue
请问各位,以下代码的break算是跳到哪一层?#include <stdio.h>
void main()
{
for(int i=0;i<200;i++)
{
for(int x=0;x<i;x++)
{
if(x==5 && i==0) break;
}
}
}
本帖最后由 醉酒青牛 于 2015-8-17 16:26 编辑
#include <stdio.h>
void main()
{
for(int i=0;i<200;i++) //第一层循环
{
for(int x=0;x<i;x++) //第二层循环
{
if(x==5 && i==0) break;
}
}
}
break语句在第二层循环体内,执行break后将跳出所在的循环体,即第二层循环,进入到第一层循环体内 大家快来回答呀 同学 多看看基础的东西
1. break一次只跳一层
2. if 无视break break会跳出离他最近的一层循环 楼主,如果觉得回答还满意的话,记得赏俺鱼币哦:loveliness: //break是结束一个层的整个循环体,continue是结束一层循环的单次循环
比方说:
while(x++ < 10)
{
if(x == 3)
{
break;
}
printf("%d\r\n", x);
}
结果是输出1 2 就退出了整个while循环
但是如果使用continue
while(x++ < 10)
{
if(x == 3)
{
continue;
}
printf("%d\r\n", x);
}
结果是:1 2 4 5 6 7 8 9 10可见他仅仅是不输出3,因为他结束了本次循环 你的代码不会有任何执行break语句,因为当 i==0 时绝不会出现 x==5,
你可以将 x==5 && i==0 改写成 (x==5 || i==0) 跳出的是变量为 x 的那一层。可以用如下代码做个测试。
#include <stdio.h>
void main()
{
int i;
int x;
for(i=0;i<200;i++)
{
for( x=0;x<i;x++)
{
if(x==5 || i==0) {
printf("In x:now i=%d,x=%d\n",i,x);
break;
}
}
}
}
醉酒青牛 发表于 2015-8-17 14:45
#include
void main()
{
非常好,感谢你的建议!
页:
[1]