1. 程式人生 > >不得不說的“return 0;”

不得不說的“return 0;”

影響 禁用 直接 num c/c++ 進程 oid text png

引子:

  相信很多的C語言初學者都會有一個問題——問什麽在主函數的最後都要加上一行在實際運行過程中沒有實際效果的”return 0;”呢?實際上,很多編了4年代碼的同學,也只是將它作為一個規範,課堂上老師的解釋也很模糊,導致這個問題普遍的被忽略掉,現在,我們就來探討一下這個”return 0;”在函數中,究竟有什麽作用。

一、return的作用

return、continue、break、goto

在C/C++中,這四個關鍵字設計的初衷都是為了方便程序的開發和閱讀,但goto在開發者長期的使用過程中,被認為是“影響程序的閱讀,使程序變得混亂,可能還會出現死循環”,被禁用了,所以無論是在教科書中,還是課堂講授中,都很少提及它。

言歸正傳,return的作用是終止函數的運行,直接跳出該函數,後面可以加上函數的返回值,也可以直接使用(在無返回值的函數中)。
code 1:

1 int maxNumber(int a, int b)
2 {
3     if(a > b)
4     {
5         return a;//直接跳出
6     }
7     return b;
8 }

二、return 0的作用(主函數中)

“return 0”的作用,就是返回了一個標識,表示正常退出。

什麽意思呢?簡單點來說,就是告訴操作系統,進程執行完了,而且沒有問題,你可以放心的讓下一個進程執行了。

如果不加return 0的話,系統無法判斷運行結果,會認為他是一個異常返回,會采取相應的措施來處理它。

三、命令行下直觀的演示

* "1 && dir "的意思執行1.exe,如果正常返回,則執行dir命令。

code 2:

1 #include "stdio.h"
2 
3 int main()
4 {
5     printf("this!\n");
6     return 0;
7 }

picture 1:執行結果

技術分享

code 3:

1 #include "stdio.h"
2 
3 int main()
4 {
5     printf("this!\n");
6 }

picture 2:執行結果

技術分享

結果很明顯,不加return 0;的代碼,系統將他視為異常返回了。

四、小的知識點

  • 不要認為把int main()改為void main()就可以不用return 0了,這是一種很不負責的行為。
  • main的返回值必須為int型,不要出其不意,來個return a。
  • C99的編譯器已經可以智能的在編譯時添加return 0了,但vc6,以及更早的版本中並沒有這項功能,而且為了後期的移植,還是要養成return 0的好習慣!

五、總結

無論你知不知道原理,都要加return 0!這是專業人士和業余人士在習慣上的區別!

不得不說的“return 0;”