C语言程序流程设计之跳转【程序流程设计】(14)
- 跳轉(zhuǎn)
- break
- 解析
- 語法與流程
- 代碼演示
- continue
- 解析
- 語法和流程
- 代碼演示
- return
- goto
- 代碼演示
- 測試 break 能跳出幾層循環(huán)結(jié)構(gòu)
跳轉(zhuǎn)
前兩種跳轉(zhuǎn)是發(fā)生在循環(huán)內(nèi)部的,也就是說 break(switch),continue 只能出現(xiàn)在循環(huán)中。后兩者則沒有限制。
break
break 不能單獨(dú)使用
可以和switch一起使用,用于跳出switch。
也可以和循環(huán)一起使用,用于跳出循環(huán)。
解析
他存在的意義,就是在提前結(jié)束當(dāng)前循環(huán),即跳出當(dāng)前循環(huán)。有點(diǎn)像生活的中“閥”,水閥,電閥一樣,到達(dá)某一個條件就會自動放水或停電,所以說,break 通常出現(xiàn)在條件表達(dá)式的后面,注意,break 只能跳出一重循環(huán)。
語法與流程
代碼演示
#include <stdio.h> #include <windows.h> int main() {for (int floodLevel = 10; floodLevel < 100; floodLevel += 5){printf("當(dāng)前水位是%d\n", floodLevel);if (floodLevel == 95)break;Sleep(1000);}printf("開閥放水\n");return 0; }運(yùn)行結(jié)果為:
continue
解析
它存在的意義,在于結(jié)束當(dāng)前本輪循環(huán),進(jìn)入下一輪循環(huán)。有點(diǎn)像生活中的“篩子”只留下滿足條件的,也像海邊撿貝殼的小姑涼,只撿自己喜歡的。所以說,cotinue 通常出現(xiàn)在條件表達(dá)式的后面,特點(diǎn):只能結(jié)束當(dāng)前循環(huán)提前進(jìn)入下一輪循環(huán)。
語法和流程
代碼演示
打印[1,100] 以內(nèi)所有能被 3 整除的數(shù)
#include <stdio.h> #include <windows.h> int main() {for (int i = 0; i <= 100; i++){if (i % 3 != 0)continue;printf("%d\n", i);}return 0; }運(yùn)行結(jié)果為:
return
跳出當(dāng)前函數(shù),返回調(diào)用。如果當(dāng)前函數(shù)是 main 函數(shù),則該進(jìn)程結(jié)束,等價于 exit()函數(shù),因?yàn)椴僮飨到y(tǒng)發(fā)起的對 main()的調(diào)用,main()函數(shù)結(jié)束,意味著整個進(jìn)程/程序的退出。
goto
這是一個不太值得探討的話題,goto 會破壞結(jié)構(gòu)化程序設(shè)計(jì)流程,它將使程序?qū)哟尾磺?#xff0c;且不易讀,所以慎用。
最早提出,使用 goto 有害的是由荷蘭著名計(jì)算機(jī)科學(xué)家 E.W.Dijkstra(艾茲格·迪杰斯特拉)于 1968 年提出的。
goto 語句,僅能在本函數(shù)內(nèi)實(shí)現(xiàn)跳轉(zhuǎn),不能實(shí)現(xiàn)跨函數(shù)跳轉(zhuǎn)(短跳轉(zhuǎn))。但是他在跳出多重循環(huán)的時候效率還是蠻高的,再者就是 集中錯誤處理。
代碼演示
#include <stdio.h> #include <windows.h> int main() {for (int i = 0; i < 1; i++){for (int j = 0; j < 1; j++){for (int k = 0; k < 100; k++){printf(" for(int k=0; k<100; k++)\n");if (k == 5)goto Target; //return ;//break;}printf("for(int j=0; j<1; j++) \n");}Target:printf("for(int i=0; i<1; i++)\n");} }運(yùn)行結(jié)果為:
測試 break 能跳出幾層循環(huán)結(jié)構(gòu)
代碼演示:
#include <stdio.h> int main(void) {while (1){switch (1){case 1: break;}printf(" switch(1)\n");break;}printf(" while(1)\n");return 0; }運(yùn)行結(jié)果為:
我們可以得出結(jié)論:
break一次只能跳出當(dāng)前一層循環(huán)。
return 跳出當(dāng)前函數(shù)。
goto只能在當(dāng)前函數(shù)跳轉(zhuǎn)。
總結(jié)
以上是生活随笔為你收集整理的C语言程序流程设计之跳转【程序流程设计】(14)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多文件编程 【多文件编程】(26)
- 下一篇: C语言程序流程设计之循环【程序流程设计】