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