高等 C 語言 -- 短程跳躍 (goto)
高等 C 語言簡介字串指標與陣列函數結構物件導向記憶體檔案錯誤處理巨集處理C 與組合語言資料結構動態字串動態陣列鏈結串列雜湊表開發環境MakeCygwinMinGWDevC++wxDevC++編譯器gcc 編譯器TinyCC 編譯器LCC 編譯器應用主題CGI 程式GNU 程式視窗程式影像處理練習題訊息相關網站參考文獻最新修改簡體版English |
程式範例#include <stdio.h> int main(int argc, char *argv[]) { int a = atoi(argv[1]); int b = atoi(argv[2]); char *fileName = argv[3]; if (b == 0) // can't divide by 0 goto DivideByZero; int result = a/b; FILE *file; if ((file=fopen(fileName, "w")) == NULL) goto FileError; else { fprintf(file, "%d/%d=%d\n", a, b, result); printf("save to file %s : %d/%d=%d\n", fileName, a, b, result); } fclose(file); goto Exit; DivideByZero: printf("Error : Divide by zero\n"); goto Exit; FileError: printf("Error : File error\n"); goto Exit; Exit: return 0; } 執行結果
注意事項goto 指令之所以被認為是短程跳躍,是因為 goto 不可以跨越函數,舉例而言,以下的跳躍方式就會出錯。 #include <stdio.h> void div() { DivideByZero: printf("Error : Divide by zero\n"); } int main(int argc, char *argv[]) { int a = atoi(argv[1]); int b = atoi(argv[2]); char *fileName = argv[3]; if (b == 0) // can't divide by 0 goto DivideByZero; int result = a/b; return 0; } 編譯錯誤
|
page revision: 0, last edited: 03 Sep 2010 09:29
Post preview:
Close preview