2013-02-10 110 views
1

爲什麼此代碼打印出n-100?爲什麼這個C++函數返回一個值?

int hello(int n) 
    { 
     for(int i = 0; i < n-100; i++) 
     { 
     } 
    } 

    int main() 
    { 
      int h = hello(12); 
     cout << hello(12) << " " << h << endl; 
    } 

然而,這兩個函數返回垃圾(分別爲2665092和0)

int hello1(int n) 
    { 
      for(int i = 0; i < 12; i++); 
    } 


    int hello2(int n) 
    { 
     (n - 100); 
    } 

我在cygwin環境中使用的g ++編譯該代碼。

+1

*「爲什麼這個代碼打印n-100?」*它不,我得到'1 1'。 :) – jrok 2013-02-10 17:26:44

+0

返回值應該存儲在某個地方,如寄存器中。如果您不設置返回值,那麼該寄存器可能包含其他內容,如您最近使用的值。 – 2013-02-10 17:31:45

+0

@BoPersson啊謝謝你,這使得很多意義。 – 2013-02-10 17:43:56

回答

5

您只是看到未定義的行爲的結果。

總是用-Wall -Werror進行編譯,以防止這種bug蔓延到您的代碼中。

相關問題