C語言break和continue的語句用法
1.知識(shí)了解
在c語言中,為了使用循環(huán)控制更靈活,c語言允許在特定條件成立時(shí)使用break語句和continue語句控制循環(huán)的執(zhí)行過程
- ♞break:用于循環(huán)語句和switch語句中,它跳出所在的那一層循環(huán)語句或者switch語句。
- ♞continue:用于循環(huán)語句中,他跳出所在的那一輪循環(huán),繼續(xù)下一輪循環(huán)。
這是它們兩個(gè)的定義和使用邏輯,但是為了弄懂它們?cè)诰唧w的使用情況,我們可以把上述的定義全部拉滿,就可以了,嘿嘿!
♕循環(huán)語句:在c語言中,無非是三種循環(huán)語句,while循環(huán),do…while循環(huán),for循環(huán)。
那么我們就每一個(gè)循環(huán)舉一個(gè)例子,就可以挖掘我們需要知道的東西啦。理論存在,例子來了!??!
2.for循環(huán)中break和continue語句的用法
輸出100~ 200能同時(shí)被3,5,和7整除的整數(shù): ①
#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 ); } }
輸出結(jié)果
如果要是不用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 ); } }
運(yùn)行結(jié)果與上面相同
但是如果加上break則發(fā)生了奇妙的化學(xué)反應(yīng)
③
#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 ); } }
輸出結(jié)果:
所以在for循環(huán)里面,第一個(gè)例子可以看出,continue一般接在if判斷語句的后面,用來控制循環(huán)變化。continue就像是門衛(wèi)一樣,只要你還滿足條件,就給我進(jìn)去循環(huán)去,變成我不想要的樣子,在放你出去進(jìn)行下面的語句,可能這么說有點(diǎn)抽象,可以看下面的動(dòng)態(tài)圖解
這里就可以明白continue的存在就是不讓下面的語句動(dòng),只有不滿足判斷語句才可以跳出來,執(zhí)行下面的語句。一看就是個(gè)狠人呀?。?!
對(duì)于③里面的break可以看出是直接跳出循環(huán),105滿足條件,沒問題,循環(huán)結(jié)束了,break的存在就像是一個(gè)固執(zhí)的老頭,只要滿足需求了,后面的人就不要了,我也不看了的感覺。
3.while循環(huán)continue語句的用法 ①
int i,n=0; while(i<10) { n++; if(i>5) continue; i++; } printf("i=%d,n=%d",i,n);
運(yùn)行結(jié)果
上述代碼執(zhí)行完成后是死循環(huán),因?yàn)閕=6時(shí)滿足if條件,執(zhí)行continue語句,i的值仍為6,執(zhí)行下一輪循環(huán),滿足if條件,執(zhí)行continue語句,i值仍為6,這樣就變成了死循環(huán)。
4.switch語句中break和continue語句的用法
你看到上面這個(gè)小標(biāo)題一定會(huì)想我去,這個(gè)土豆哥有點(diǎn)瓦呀,switch語句中不能使用continue語句,儂曉得哇?。?!
毋庸置疑,在switch case 語句中不能使用continue 關(guān)鍵字。continue語句的作用是跳出本次循環(huán),轉(zhuǎn)入執(zhí)行下一次循環(huán)。故而,continue語句只能用于循環(huán)語句中,而switch case語句為多分支選擇語句,不是循環(huán)語句。
但是直到我看見了這個(gè)題目,改變了我的一些看法。
為了大家方便驗(yàn)證:(代碼如下)
#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; }
運(yùn)行結(jié)果
然后我又把continue語句刪除后的運(yùn)行結(jié)果
#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; }
運(yùn)行結(jié)果
然后我再把continue語句換成break語句的運(yùn)行結(jié)果
#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; }
運(yùn)行結(jié)果
可以看出continue語句在switch里還是起到了一定的效果的。然后我們可以利用斷點(diǎn)的形式來實(shí)現(xiàn)知道每一步的值。(這里大家可以自己去試一試呀)然后呢,我把這個(gè)過程總結(jié)在下面的圖里面了。
從上面的圖可以看出continue語句在switch中的用法還是跟他的原始定義一樣,跳到上面的循環(huán),然后繼續(xù)執(zhí)行。在本題中就是在c=D時(shí)不執(zhí)行下面的k++,跳回上面的c++,然后呢,在執(zhí)行c=E。感覺呢可以了解一下,雖然理論上來說continue不能用于switch里面,但是這里確實(shí)沒報(bào)錯(cuò)呀。哈哈,看來矛盾確實(shí)是生活的一部分,要是大佬們有自己的看法歡迎在下面留言評(píng)論呀?。?!
到此這篇關(guān)于C語言break和continue的精妙布局的文章就介紹到這了,更多相關(guān)C語言break和continue內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于CLion配置visual?studio(msvc)和JOM多核編譯的問題
這篇文章主要介紹了CLion配置visual?studio(msvc)和JOM多核編譯,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07C語言數(shù)據(jù)結(jié)構(gòu)之串插入操作
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)之串插入操作的相關(guān)資料,希望通過本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10C語言實(shí)現(xiàn)選擇排序、冒泡排序和快速排序的代碼示例
這篇文章主要介紹了C++中實(shí)現(xiàn)選擇排序、冒泡排序和快速排序的代碼示例,例子帶有執(zhí)行時(shí)間統(tǒng)計(jì)還可以簡(jiǎn)單看一下效率對(duì)比,需要的朋友可以參考下2016-04-04用C語言判斷一個(gè)二叉樹是否為另一個(gè)的子結(jié)構(gòu)
這篇文章主要介紹了用C語言判斷一個(gè)二叉樹是否為另一個(gè)的子結(jié)構(gòu),是數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)當(dāng)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-08-08c++實(shí)現(xiàn)發(fā)送http請(qǐng)求通過get方式獲取網(wǎng)頁源代碼
這篇文章主要介紹了c++實(shí)現(xiàn)發(fā)送http請(qǐng)求,通過get方式獲取網(wǎng)頁源代碼的示例,需要的朋友可以參考下2014-02-02