用C ++返回值

时间:2016-12-22 15:41:03

标签: c++

我对C ++中的以下输出感到困惑

int add()
{
    int c = 2+3;
}

int main()
{
    int x = add();
    cout << x;
    return 0;
}

如果我们不写return语句,则打印5.even。 如何在C ++中管理它。 请帮忙。

1 个答案:

答案 0 :(得分:3)

这是UB。你很困惑 - 这可能有一天工作而下一次失败。不要依赖未定义的行为。

如果你想知道为什么它的工作原理,那就是因为参数&amp;返回值在称为堆栈的数据结构上传递(通常;通常;有时在同一寄存器中传递)。类似地,大多数实现对本地使用相同的堆栈。因此,int中的add将位于与预期返回值相同的位置(通过您的具体实现),并且当您的int时,您的实现不会使内存无效有破坏。但它仍然被破坏,它仍然是UB,它可能会在任何时候破裂。

正如评论所写,您可能会打开警告以避免此类错误。