2012-01-18 91 views
-2

可有人應歸結爲我那是什麼「回報」的功能到底爲什麼我們要在主函數返回0.eg年底寫我們必須在函數「return」的末尾寫什麼?在C++

int main() 
{ 
    ..... 
    return 0; 
} 
+0

您請求從功能正確的東西嗎?所以你需要有一個'return'。如果你不期望函數中的任何東西,只要將它聲明爲void main(){.... //不需要返回調用}' – 2012-01-18 19:37:17

+3

@ sh4nx0r:no,*這是無效*。 'main'必須有'int'返回類型。無論如何,'main'的特殊之處在於你並不需要從中返回任何東西。 – 2012-01-18 19:41:40

回答

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); 
相關問題