如果我有这样的功能:功能不使用回C++
int addNumbers(int x, int y)
{
return x + y;
}
,如果我用它作为这样的:
cout << addNumbers(4, 5) << endl;
它会返回并打印9
。使用上面相同的cout
行,如果我注释掉或删除addNumbers
中的返回,它将返回并打印1
。如果我这样做:
int addNumbers(int x, int y)
{
int answer = x + y;
//return x + y;
}
它将使用收益自动返回和打印9
,没有我。同样,我可以写int answer = x
;它将返回4
。我也可以这样写:
int addNumbers(int x, int y)
{
int answer = x;
answer = 1;
//return x + y;
}
,它仍然会返回4.
究竟是返回,为什么?当我使用参数变量时,它只返回1以外的值,但它不返回如上例所示的变量答案,因为我将其更改为1,并且它仍然返回值x (4)
。
这是UB,它返回,因为它发生在堆栈上,为x64构建,它将是一个“随机”值 – paulm 2014-09-06 08:43:31
它是[* undefined behavior *](http://en.wikipedia.org /维基/ Undefined_behavior)。 – 2014-09-06 08:46:04