C語言break和continue的語句用法
1.知識瞭解
在c語言中,為瞭使用循環控制更靈活,c語言允許在特定條件成立時使用break語句和continue語句控制循環的執行過程
- ♞break:用於循環語句和switch語句中,它跳出所在的那一層循環語句或者switch語句。
- ♞continue:用於循環語句中,他跳出所在的那一輪循環,繼續下一輪循環。
這是它們兩個的定義和使用邏輯,但是為瞭弄懂它們在具體的使用情況,我們可以把上述的定義全部拉滿,就可以瞭,嘿嘿!
♕循環語句:在c語言中,無非是三種循環語句,while循環,do…while循環,for循環。
那麼我們就每一個循環舉一個例子,就可以挖掘我們需要知道的東西啦。理論存在,例子來瞭!!!
2.for循環中break和continue語句的用法
輸出100~ 200能同時被3,5,和7整除的整數: ①
#include <stdio.h> void main() { int n; for (n=100;n<=200;n++) { if(n%3!=0||n%5!=0||n%7!=0) continue; printf("%d\n",n ); } }
輸出結果
如果要是不用continue完成上述條件
②
#include <stdio.h> void main() { int n; for (n=100;n<=200;n++) { if(n%3==0 && n%5==0 && n%7==0) printf("%d\n",n ); } }
運行結果與上面相同
但是如果加上break則發生瞭奇妙的化學反應
③
#include <stdio.h> void main() { int n; for (n=100;n<=200;n++) { if(n%3==0 && n%5==0 && n%7==0)break; printf("%d\n",n ); } }
輸出結果:
所以在for循環裡面,第一個例子可以看出,continue一般接在if判斷語句的後面,用來控制循環變化。continue就像是門衛一樣,隻要你還滿足條件,就給我進去循環去,變成我不想要的樣子,在放你出去進行下面的語句,可能這麼說有點抽象,可以看下面的動態圖解
這裡就可以明白continue的存在就是不讓下面的語句動,隻有不滿足判斷語句才可以跳出來,執行下面的語句。一看就是個狠人呀!!!
對於③裡面的break可以看出是直接跳出循環,105滿足條件,沒問題,循環結束瞭,break的存在就像是一個固執的老頭,隻要滿足需求瞭,後面的人就不要瞭,我也不看瞭的感覺。
3.while循環continue語句的用法 ①
int i,n=0; while(i<10) { n++; if(i>5) continue; i++; } printf("i=%d,n=%d",i,n);
運行結果
上述代碼執行完成後是死循環,因為i=6時滿足if條件,執行continue語句,i的值仍為6,執行下一輪循環,滿足if條件,執行continue語句,i值仍為6,這樣就變成瞭死循環。
4.switch語句中break和continue語句的用法
你看到上面這個小標題一定會想我去,這個土豆哥有點瓦呀,switch語句中不能使用continue語句,儂曉得哇!!!
毋庸置疑,在switch case 語句中不能使用continue 關鍵字。continue語句的作用是跳出本次循環,轉入執行下一次循環。故而,continue語句隻能用於循環語句中,而switch case語句為多分支選擇語句,不是循環語句。
但是直到我看見瞭這個題目,改變瞭我的一些看法。
為瞭大傢方便驗證:(代碼如下)
#include <stdio.h> int main(void) { int k=0;char c='A'; do { switch(c++) { case 'A':k++;break; case 'B':k --; case 'C':k+=2;break; case 'D':k=k%2;continue; case 'E':k=k*10;break; default:k=k/3; } k++; }while(c<'G'); printf("k=%d\n",k ); return 0; }
運行結果
然後我又把continue語句刪除後的運行結果
#include <stdio.h> int main(void) { int k=0;char c='A'; do { switch(c++) { case 'A':k++;break; case 'B':k --; case 'C':k+=2;break; case 'D':k=k%2; case 'E':k=k*10;break; default:k=k/3; } k++; }while(c<'G'); printf("k=%d\n",k ); return 0; }
運行結果
然後我再把continue語句換成break語句的運行結果
#include <stdio.h> int main(void) { int k=0;char c='A'; do { switch(c++) { case 'A':k++;break; case 'B':k --; case 'C':k+=2;break; case 'D':k=k%2;break; case 'E':k=k*10;break; default:k=k/3; } k++; }while(c<'G'); printf("k=%d\n",k ); return 0; }
運行結果
可以看出continue語句在switch裡還是起到瞭一定的效果的。然後我們可以利用斷點的形式來實現知道每一步的值。(這裡大傢可以自己去試一試呀)然後呢,我把這個過程總結在下面的圖裡面瞭。
從上面的圖可以看出continue語句在switch中的用法還是跟他的原始定義一樣,跳到上面的循環,然後繼續執行。在本題中就是在c=D時不執行下面的k++,跳回上面的c++,然後呢,在執行c=E。感覺呢可以瞭解一下,雖然理論上來說continue不能用於switch裡面,但是這裡確實沒報錯呀。哈哈,看來矛盾確實是生活的一部分,要是大佬們有自己的看法歡迎在下面留言評論呀!!!
到此這篇關於C語言break和continue的精妙佈局的文章就介紹到這瞭,更多相關C語言break和continue內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- None Found