在循环语句我们经常会见到break或者是continue,那这两者到底有什么区别呢?
break
只能在循环体内和switch语句体内使用break;
break语句可用于跳出循环。break所在的循环体已经结束。
像这个代码,当i等于5时,条件满足,则跳出循环。
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
break;
printf("%d ", i);
i = i + 1;
}
//输出 1 2 3 4 ,break为永久终止循环
system("pause");
return 0;
}
结果:输出 1 2 3 4
continue
continue 语句中断循环中的迭代,如果出现了指定的条件,然后继续循环中的下一个迭代。continue所在的循环体并没有结束。
而作为continue来说,如果像上面的代码,结果是怎样的呢?
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
continue;
printf("%d ", i);
i = i + 1;
}
system("pause");
return 0;
}
如图所示,程序就像卡住了一样,一直停留在输出4之后的结果成了死循环,为什么会这样呢?
原因是在循环内部遇到continue直接跳出,不再执行后边的语句,调到while部分。重新进行下一次的循环,此时的i依旧等于5,所以又会跳转到循环中的下一个迭代,造成死循环。
如果我们把i = i + 1;放在continue语句之前运行,那么结果就完全不一样了
总结
当它们用在循环语句的循环体时,break用于立即退出本层循环,而continue仅仅结束本次循环(本次循环体内不执行continue语句后的其它语句,但下一次循环还会继续执行。