-2
A
回答
6
你不必須在C++中使用main
的末尾編寫return
;隱含返回值0
。 (這在C中是不同的,你必須返回一個值。)
這樣做是向程序的環境返回一個值,以便可以知道程序是成功(零)還是遇到了一些錯誤(非零)。其他程序,包括shell腳本/批處理文件可以使用這些信息來做出決定,例如,當他們運行的程序遇到錯誤時,他們可以提前停止。
0
所有支持函數調用的CPU都有一條類似於RET
的指令,從被調用函數內部顯式返回,返回到調用該函數的代碼。函數調用後要返回的代碼的內存地址已經保存在「知道的地方」(例如堆棧)中。 RET
指令將檢索該內存地址並將CPU指向正確的位置,以便在原始函數調用之後的代碼處繼續執行。在C++中,某些函數被聲明爲「返回」特定值(如上面的函數main),而其他函數從不返回任何值(聲明爲返回類型爲void)。它是您選擇如何聲明您編寫的函數的選擇。如果函數返回類型爲void,那麼而不是需要在代碼中顯式返回語句,除非過早返回,例如從if,else或loop中返回。例如:
void foo(int x) {
if (x == 0)
return; // premature return to caller
int b = x*2;
// do some more stuff
// and now no need to say return, its done implicitly because we are at function end
}
然而,當你的函數聲明爲具有非void返回類型(例如INT),那麼你應該有一個明確的return語句的功能,即使你是不返回過早。
int bar(int y) {
return y*7;
}
,因爲調用方期待它,可能的返回值分配給這樣的變量:
int z = bar(4);
相關問題
- 1. 爲什麼我們需要在C函數的末尾使用'return 0'?
- 2. 爲什麼我必須在git日誌的末尾打到q
- 3. 爲什麼我們必須在react-native的promise鏈末尾調用`.done()`?
- 4. 爲什麼顯示UIAlertView必須在線程的末尾
- 5. Python C API:我們什麼時候在Python指令的末尾?
- 6. 爲什麼我必須在子查詢末尾加上「AS」子句。
- 7. 爲什麼我們應該在button_press_event.handler的末尾返回True?
- 8. 爲什麼我們必須綜合?
- 9. 爲什麼我必須重新聲明C++派生類中的重寫函數?
- 10. 爲什麼我得到的錯誤「參數包'F'必須在模板參數列表末尾」
- 11. 爲什麼我必須使用「本」在函數的
- 12. 什麼是PostgreSQL函數,什麼時候我必須使用它們?
- 13. 爲什麼我們必須寫頭緩存控制?
- 14. 如果我在PHP的函數末尾沒有包含「return」,會發生什麼情況?
- 15. 我們必須在Android的Twitter Api中的回調URL中編寫什麼?
- 16. 爲什麼我必須玩「rsp」才能調用C++函數?
- 17. 爲什麼必須在函數中包含C++代碼?
- 18. 爲什麼在此函數定義的末尾添加了const?
- 19. 爲什麼我必須在setTimeout中包裝函數?
- 20. 在異步函數中,爲什麼我必須等待?
- 21. 爲什麼我必須在函數中附上jQuery命令
- 22. 爲什麼我明確地必須在這裏聲明函數?
- 23. ASP.NET MVC 2 - 做UrlParameter.Optional條目必須在路由的末尾?
- 24. 寫在xml的末尾
- 25. 我怎麼在URL的末尾添加JSON傳遞給函數
- 26. 我如何寫文件在文件末尾的文件在c + +
- 27. 爲什麼我們必須在網站應用程序中寫入robots.txt?
- 28. 爲什麼必須N-1在C
- 29. SWIFT:爲什麼我們必須將驚歎號放在:str.characters.index(of:「」)!
- 30. 爲什麼我們必須在Oracle PL/SQL中嵌套塊?
您請求從功能正確的東西嗎?所以你需要有一個'return'。如果你不期望函數中的任何東西,只要將它聲明爲void main(){.... //不需要返回調用}' – 2012-01-18 19:37:17
@ sh4nx0r:no,*這是無效*。 'main'必須有'int'返回類型。無論如何,'main'的特殊之處在於你並不需要從中返回任何東西。 – 2012-01-18 19:41:40