1. 程式人生 > >多層迴圈的跳出(return goto break continue 的用法與區別)

多層迴圈的跳出(return goto break continue 的用法與區別)

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 語句。