2010-04-14 49 views
4

我新近使用CODE :: BLOCKS + mingw編譯器 如果我在程序結束時沒有鍵入return 0,我可以看到main()返回一些整數,我得知main()返回0推斷程序執行成功。我沒有發現我的代碼有任何缺陷,爲什麼它返回一些整數?main()返回其值嗎?

其次 任何函數將其值返回給其函數調用,main()返回其值的位置?

回答

10

C++標準說,如果你不明確返回值,編譯器必須生成代碼,如果你輸入:

return 0; 

究竟是什麼返回值的手段,以及它如何被返回是實施具體。對於大多數操作系統,返回值成爲進程的退出代碼。

+0

這隻適用於C++;沒有明確定義爲使用的語言。 – 2010-04-14 13:29:40

+0

@Williham問題標記爲「C++」 – 2010-04-14 13:30:25

+1

它也被標記爲「C」。而且由於這個問題的出現,他顯然沒有使用C++編譯器。 (至少不符合規範) – 2010-04-14 13:31:15

2

main()將其值返回給系統(間接地,我們不討論這一點)。

當控制到達帶有返回值的函數的末尾時(例如,main();將返回的內容是寄存器中已存在的用於保存返回值的內容(有時這是最後一個值。聲明中,有時不)

道德,當然是,你應該總是最後你的主,返回0;

3

的main()返回其值設置爲系統,然後該系統可以使用它作爲一個。錯誤或成功代碼在Linux中,您可以這樣做:

$ yourprog && someotherprog 

它將運行yourprog,然後someotherprog,當且僅當yourprog返回0

在Windows中您可以使用批處理腳本的if errorlevel成語來檢查程序的返回值。另外,如果你從另一個進程(與fork()CreateProcess()什麼的),你可以稍後檢索其退出狀態,並採取相應的行動。

0

main()將它的值返回給加載器(系統)。它表示程序是否成功執行。 return(0);由於成功未定義,因此表示成功:D!

+1

''在'stdlib.h'中定義'EXIT_SUCCESS'。 – dreamlax 2013-10-13 05:46:42

相關問題