在 C 語言裡,函式前面有一個型別識別符號,這表示了這個函式會返回一個什麼樣的結果。如果是void,那就是沒有返回值,說明這個函式僅僅是做一些操作,比如輸出資訊,修改檔案,我們無需獲取它的結果。舉個好理解的例子,函式sin(x),這個函式的返回值為double型別(如果你不是很清楚的話,先理解成小數吧)。那麼,這個函式返回的值,就是這個正弦函式的計算結果。從這個意義上說,計算機程式設計裡的函式和數學概念中的函式有相似的地方。
那main()函式返回什麼呢?有什麼意義呢?這裡的return 0;據某些書上寫,省略掉也是符合標準的。但是我沒有去求證。這裡的這個 0 是返回給作業系統,或者說是你執行這個程式使用的終端的。根據 C 和 UNIX 的規定,0 表示執行成功,沒有出錯。你也許會說,那就算程式出錯了,它不也成功退出了嗎,有用咩?
當然有用了。特別是如果你用過 Linux 或者其它類 UNIX 系統的 Shell 的話。在筆者電腦上安裝的 zsh 上,如果把這個程式的返回值改為 -1,然後編譯執行。結束以後的這個命令提示符會從綠色變為紅色,就像編譯一個 C 程式的時候出錯中斷了一樣。它的意思是上一個程式並沒有成功地得到執行,從而後面的工作(如果有的話)無法繼續進行。很多時候,電腦裡的程式是按一定的順序執行的。比如說,你要先洗衣服,再晾起來,如果你沒有洗好,你就不應該把它掛起來。那麼我們假設洗衣服和晾衣服是兩個程式來做的,洗衣服的程式如果執行失敗,它返回一個 -1 或者什麼值(完全可以規定每個非 0 值代表什麼型別的錯誤),然後傳遞給系統或者 Shell (這個詞的意思以後我也會說的),接下來晾衣服的程式啟動,發現洗衣服的程式返回的值不是 0,那它會自動停止。識得唔識得噶?
如果你用過 UNIX 上的管道 (Pipeline) 或者寫過 Shell 指令碼哪怕是 Windows 上的批處理的話,你的瞭解應該會更深一層。
在 C 語言裡,函式前面有一個型別識別符號,這表示了這個函式會返回一個什麼樣的結果。如果是void,那就是沒有返回值,說明這個函式僅僅是做一些操作,比如輸出資訊,修改檔案,我們無需獲取它的結果。舉個好理解的例子,函式sin(x),這個函式的返回值為double型別(如果你不是很清楚的話,先理解成小數吧)。那麼,這個函式返回的值,就是這個正弦函式的計算結果。從這個意義上說,計算機程式設計裡的函式和數學概念中的函式有相似的地方。
那main()函式返回什麼呢?有什麼意義呢?這裡的return 0;據某些書上寫,省略掉也是符合標準的。但是我沒有去求證。這裡的這個 0 是返回給作業系統,或者說是你執行這個程式使用的終端的。根據 C 和 UNIX 的規定,0 表示執行成功,沒有出錯。你也許會說,那就算程式出錯了,它不也成功退出了嗎,有用咩?
當然有用了。特別是如果你用過 Linux 或者其它類 UNIX 系統的 Shell 的話。在筆者電腦上安裝的 zsh 上,如果把這個程式的返回值改為 -1,然後編譯執行。結束以後的這個命令提示符會從綠色變為紅色,就像編譯一個 C 程式的時候出錯中斷了一樣。它的意思是上一個程式並沒有成功地得到執行,從而後面的工作(如果有的話)無法繼續進行。很多時候,電腦裡的程式是按一定的順序執行的。比如說,你要先洗衣服,再晾起來,如果你沒有洗好,你就不應該把它掛起來。那麼我們假設洗衣服和晾衣服是兩個程式來做的,洗衣服的程式如果執行失敗,它返回一個 -1 或者什麼值(完全可以規定每個非 0 值代表什麼型別的錯誤),然後傳遞給系統或者 Shell (這個詞的意思以後我也會說的),接下來晾衣服的程式啟動,發現洗衣服的程式返回的值不是 0,那它會自動停止。識得唔識得噶?
如果你用過 UNIX 上的管道 (Pipeline) 或者寫過 Shell 指令碼哪怕是 Windows 上的批處理的話,你的瞭解應該會更深一層。