break和continue的區別(流程圖表示)
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