多层循环的跳出(return goto break continue 的用法与区别)

时间:2022-11-08 20:30:28

1.continue:结束本次循环,即跳过循环体下面未执行的语句,接着进行是否执行下一次循环的判定。

#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10;i++)
{
if (i == 5)
{
continue;
//不再执行后面的语句,而是回到for语句判断循环条件是否成立.
}
printf("%d\n",i);
//打印出来的数字为1-10之间去掉5.
}
return 0;
}

2.break:从循环体内跳出,结束整个循环过程,不再判断执行循环的条件是否成立,也不执行循环体后面的语句。(break语句只能用于循环语句和switch语句中,不能单独用于其他语句)


#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10;i++)
{
if (i == 5)
{
break;
//直接跳出循环体.
}
printf("%d\n",i);
//打印出来的数字为1-4.
}
return 0;
}

3.goto:无条件转移语句,能够立即从最深层循环中退出来。(不建议过分使用goto语句,容易使得程序难于理解)

while (condition1)
{
while (condition2)
{
while (condition3)
{
if (some disaater)
goto quit;
//跳出所有循环,将程序的执行流从当前语句转移到quit后面的语句.
}
}
}
quit:
//遇到goto语句之后,程序从这个地方开始执行.
;

4.return:跳出循环的同时也做函数返回,直接写return是针对void返回值的函数来返回的,如果不是void的话,你就要在return后面加上你的返回值。

while (condition1)
{
while (condition2)
{
while (condition3)
{
if (some disaater)
return 0;
//函数终止,并返回其后面的值,循环也就结束了。
}
}
}

5.总结

 continue,只能跳出本次循环;break,只能跳出单层的循环;return将整个函数都返回了,没法再继续了;如果是在陷入了很深层次的循环里想要跳
出最外层的循环,用 goto 直接跳出却比用 break 一个循环一个循环地跳出要好得多,甚至形象比喻的说:“就像楼房着火了,来不及从楼梯一级一
级往下走,可从窗口跳出火坑(也可以看出还是尽量少用)。” 其实,你可以将 break 和 continue 理解成弱化了的 goto 语句。