【发布时间】:2014-10-31 03:37:41
【问题描述】:
如果我有这样的功能:
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,无需我使用return。同样,我可以写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 构建,它将是一个“随机”值