C 中的返回值

Return value in C++

本文关键字:返回值      更新时间:2023-10-16

我与C 中的以下输出相混淆

int add()
{
    int c = 2+3;
}
int main()
{
    int x = add();
    cout << x;
    return 0;
}

此打印5.即使我们不编写返回语句。如何在C 中进行管理。请帮助。

这是ub。您感到困惑的是正确的 - 这可能有一天有效,而下一步可以失败。不要依靠不确定的行为。

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

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