我对C ++中的以下输出感到困惑
int add()
{
int c = 2+3;
}
int main()
{
int x = add();
cout << x;
return 0;
}
如果我们不写return语句,则打印5.even。 如何在C ++中管理它。 请帮忙。
答案 0 :(得分:3)
这是UB。你很困惑 - 这可能有一天工作而下一次失败。不要依赖未定义的行为。
如果你想知道为什么它的工作原理,那就是因为参数&amp;返回值在称为堆栈的数据结构上传递(通常;通常;有时在同一寄存器中传递)。类似地,大多数实现对本地使用相同的堆栈。因此,int
中的add
将位于与预期返回值相同的位置(通过您的具体实现),并且当您的int
时,您的实现不会使内存无效有破坏。但它仍然被破坏,它仍然是UB,它可能会在任何时候破裂。
正如评论所写,您可能会打开警告以避免此类错误。