break和continue的區別(流程圖表示)

AN_drew發表於2018-06-25

for迴圈可以理解為 for(變數初始化; 迴圈判斷 ; 迴圈變數自增)

例如for(i=1; i<=100 ;i++),其中i=1是變數初始化,i<=100是迴圈判斷,i++是迴圈變數自增

只執行一次變數初始化,

然後迴圈判斷,執行迴圈體,迴圈變數自增。

再次迴圈判斷,執行迴圈體,迴圈變數自增

(一直迴圈下去。。。。。。)

迴圈過程可以看下圖的紅色箭頭。(語句1+語句2是迴圈體)



從圖中可以看到,如果迴圈中,在語句1之後,執行continue; 將會跳過語句2,直接到迴圈變數自增,進行下一次迴圈判斷。

而如果迴圈中,在語句1之後,執行break;將會退出迴圈

圖中的迴圈體是語句1和語句2,舉個具體的例子來說明break; continue;對迴圈的影響

int i,a=0,b=0;

for(i=1;i<=10;i++)

{

        a++;

        if(i%2==0) continue;

        if(i==5) break;

        b++;

}

來執行一遍迴圈過程

i=1;  迴圈判斷i<=10成立  a++;(此時a=1)   i%2!=0(不執行continue;)  i!=5(不執行break)   b++;(此時b=1)   i++;

i=2;  迴圈判斷i<=10成立  a++;(此時a=2)   i%2==0(執行continue; 跳過break判斷和b++; 直接到i++;)

i=3;  迴圈判斷i<=10成立  a++;(此時a=3)   i%2!=0(不執行continue;)  i!=5(不執行break)   b++;(此時b=2)   i++;

i=4;  迴圈判斷i<=10成立  a++;(此時a=4)   i%2==0(執行continue; 跳過break判斷和b++; 直接到i++;)

i=5;  迴圈判斷i<=10成立  a++;(此時a=5)   i%2!=0(不執行continue;)  i==5(執行break,退出迴圈)

退出迴圈後 i=5, a=5,b=2



相關文章