如果调用(非void)函数但不将其返回值赋给变量怎么办? 例如,getchar();
我一直想知道这样的价值会发生什么。我听过幽默的解释,比如“它走向以太”等等,但我真的很想知道。有没有办法恢复这样的价值? 感谢
答案 0 :(得分:4)
不,你不会。
该值从堆栈中弹出并消失。
如果需要返回值,则应将其分配给变量。
答案 1 :(得分:4)
这实际上是编译器/ CPU特定的,但在大多数情况下,返回值将在CPU寄存器中(如果它适合),并且如果后续代码未触及该寄存器,则可以使用例如“内联汇编程序”。
为了更好地回答您的问题,价值没有“发生”。它位于堆栈位置或寄存器内。如果你使用它,那很好......如果没有,真的没有任何反应。最终,堆栈或寄存器被新值覆盖......
答案 2 :(得分:0)
简单地'返回'(通过隐式调用返回或者根本不返回)并且不分配值就是这样,不分配值,因此是null
。
答案 3 :(得分:0)
如果您想详细了解一切是如何运作的,可以看一下:http://en.wikipedia.org/wiki/Call_stack