2013-02-10 111 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蔓延到您的代码中。

相关问题