多層迴圈的跳出(return goto break continue 的用法與區別)
阿新 • • 發佈:2019-02-04
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 語句。