break和continue都有改变循环执行状态的作用,那么他们有什么区别呢?
一.break
作用:break可以使流程跳出Switch结构;还可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。
注意:break语句只能用于循环语句和Switch语句中。
例:
#include<stdio.h>
int main()
{
double pi=3.1415926 ;
double r=1;
double area;
for(r=1;r<=10;r++)
{
area=pi*r*r;
if(area>100)break;
printf("r=%f,area=%f\n",r,area);
}
return 0;
}
注意:
1.在部分编译器中,上述程序中如果没有声名r,area,都会报错。
2.如果在for(r=1;r<=10;r++)后加上“;”,即代表下面的语句不在for循环中,那么编译后后报错:(break没有在循环语句或Switch语句中使用)。
3.如果将r或area定义成int型,在编译时不会报错,但在运行时结果会出错。
运行结果如下:
可见:
当r=6时,area>100,通过break直接跳出程序,下面的语句不再执行,不会出现r=6时area的结果。
(即提前结束循环)
那么continue呢?
二.continue
作用:结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。
例如:
把100~200范围内不能被3整除的数输出
#include<stdio.h>
int main()
{
int n;
for(n=100;n<=200;n++)
{
if(n%3==0)
continue;
printf("%d",n);
printf(" ");
}
printf("\n");
return 0;
}
输出结果如下:
分别介绍了二者后,我们来总结一下
1.break语句:
while(表达式1)
{....
if(表达式2)break;
...}
2.continue语句:
while(表达式1)
{....
if(表达式2)continue;
...}
综上:
二者结构上有相似点,但continue语句只结束本次循环,而非终止整个循环;break语句结束整个循环,不再判断执行循环的条件是否成立。