2013-10-16 68 views
0

回報之間的差額,我聽到有人說的main返回類型爲嚴格INTVS返回0用C

int main(){ 
    printf("hello world"); 
    return 0; // returning 0 to main indicates successful execution 
} 

相反,我試圖簡單地return

int main(){ 
    printf("hello world"); 
    return; // 
} 

它不會引發任何警告或錯誤。我想知道它是否會返回0或者一些未定義的值,如javascript

我在讀這個問題return false the same as return?,說returnreturn false兩者在JavaScript中都不相同。在C中它是一樣的嗎?任何幫助是極大的讚賞。

+0

「*不會引發任何警告或錯誤*」,但可能不便攜。它依賴於實現。 – Lion

+2

它不依賴於實現,在所示的代碼片段中。 – Sneftel

回答

5

C標準明確規定的約束:

帶表達式的return語句不得出現在函數 其返回類型爲void。沒有表達式 的返回語句只能出現在返回類型爲void的函數中。

main也不例外。所以這不是標準所不允許的。

與其他功能相比,該標準允許作爲main的例外情況的是,控制可能會在最後退出main而沒有明確的return語句。但是這兩件事情是不一樣的。

+0

是的,在重讀標準後,我完全同意。 – Sneftel

0

(注意:此答案不正確參見延答案下文)。

C標準規定,main()功能,一個空的回報,或者脫落的端,是與return 0相同。對於所有其他功能,它不會工作。

+1

我不認爲術語「從初始調用返回到主函數」意味着允許沒有表達式的顯式「返回」語句。 –

+0

嗯,你可能是對的。我並不完全清楚'main'的特殊外殼是否沒有價值地勝過'return'的特殊外殼,但後者似乎沒有太大的迴旋餘地。 – Sneftel

+1

查看標準後,我認爲這個答案根本就是一個沒有表達式的return。請看我的答案。 –