2016-11-08 75 views
-5

目前我正在學習c和我有一個關於回報的困惑:返回1非主要功能

int factorial (int n) 
{ 
    if (n == 1) 
     return 1; 
    else 
     return n * factorial (n -1); 
} 

在上面的遞歸代碼的最後一次通話時,n爲1,將返回1將返回整數值1或執行錯誤,就像在main中一樣。我有這種困惑,因爲返回1在main和main函數中被區別對待...

+4

你可以從任何返回'int',甚至'main'的函數返回'1'。 (來自'main'的返回值可能被*操作系統*以某種方式解釋,但任何合法的'int'都可以從*程序*的角度返回)。 – BoBTFish

+0

1.如果這個問題是關於C,請刪除C++標記。2.是什麼讓你認爲返回'1'是一個錯誤? – UnholySheep

+1

如果任何執行某種計算的函數在被認爲是錯誤的情況下能夠返回1(或任何非零值)? 「main」的返回值爲零爲好,而一個錯誤的小正數只是一個* convention *真的。 –

回答

1

return 1是否會返回整數值1或執行錯誤,如main?

return 1返回整數值1任何函數聲明爲返回int即使該功能恰好是int main()

來自main()的非零返回值是,解釋爲(由執行環境,例如shell)指示執行錯誤。那恰好是語義的返回值main()

0

return語句將返回return語句的參數中的值,並且它必須是功能。價值的含義取決於解釋。主函數的返回值可以解釋爲成功或錯誤代碼。有時也在其他功能中。

0

return 1表示返回1 - 無論是在main函數還是在其他函數中。

函數返回值的解釋由調用函數進行。

main的情況下,由於在代碼中沒有函數應當調用它,作爲1誤差執行中解釋由誰執行該程序由(或更精確地,可製成)。