2016-07-28 100 views
2

在下面的程序中,存儲的值爲return 0,它實際上代表什麼意思?int main()的返回值存儲在哪裏?

#include <iostream.h> 

int main() 
{ 
    cout<<"Hello World"; 
    return 0; 
} 
+0

取決於操作系統。 – 101010

+1

返回值通知宿主環境您的程序的成功狀態。可以返回的唯一兩個值是'EXIT_SUCCESS'或'EXIT_FAILURE';前者與返回'0'具有相同的效果。不同的平臺可以支持更多種狀態值(例如,Posix允許8位值狀態)。 –

回答

2

main()返回值是通常的過程(例如,如果它是從命令行調用)的返回值。其確切的存儲位置和傳輸機制返回到調用shell(或父進程)是由定位的平臺定義的。

0EXIT_SUCCESS)的返回通常意味着程序無錯完成。非零值反過來表示錯誤 - 您的程序將定義每個值的確切含義。

+0

不需要有「呼叫外殼」。實際上,典型操作系統上的大多數進程可能永遠不會由「shell」創建。 –

+0

@KerrekSB。正確,這是針對某些情況並作爲例子。 – Niall

1

使用main的返回值作爲過程的退出狀態。

wikipedia描述什麼退出狀態表示:

退出狀態或返回在計算機編程過程的代碼是從一個子進程(或被叫方)通過少數的父進程(或調用者)完成執行特定過程或委託任務時。

因此,您可能會說返回值存儲在父進程的內存中。


中的值的標準的宏EXIT_SUCCESS(由報頭<cstdlib>定義)表示該過程是成功的,而EXIT_FAILURE值表示失敗。

在POSIX系統(以及我用過的其他系統)上,0表示成功,而非0表示失敗。

0

這不是真的由語言定義。最常見的是,它存儲在x86架構的EAX寄存器中。控制流程返回到調用main()的過程,它可以隨心所欲地執行任何操作。

我看到的最常見含義是正常執行(成功)爲零,一個用於泛型錯誤,但每個值都可能意味着程序特有的某些內容。我從來沒有建立過一個程序,通過main從int中返回任何有意義的東西,但是假設你創建了一個添加兩個數字的程序,那麼return的含義就是兩個數字的總和,把main看作是一個函數,你的程序從哪個開始。