【发布时间】:2018-07-16 19:50:00
【问题描述】:
#include <stdio.h>
int main()
{
static int i = 5;
if (--i)
{
main();
printf("%d\n", i); // will this line executes ?
}
return 0;
}
输出:
0
0
0
0
在 main() 下执行代码;每次主递归调用发生并从该程序终止时执行时,都会将 printf 语句指令放入堆栈?
【问题讨论】:
-
这是基本递归。我建议您阅读它以及
static的工作原理。 -
欢迎来到 SO。请始终展示您当前的努力并告诉我们您究竟在哪里遇到问题。如果输出不是您所期望的,请告诉我们您的期望。
-
@DevSolar 该网站应该建立一个可搜索的知识库,其他人可以将其用作参考网站......不可能有一个标题为“有人可以解释这个程序的输出”的问题除了代码没有其他文字,将永远帮助其他人
-
@M.M:这个网站也应该帮助用户解决他们的问题;我们是否因为给他们一个更好的标题需要OP 没有关于该问题的知识而对问题投反对票?如果他知道所有关于
static和递归的知识,他就不必问了。 -
事实上,对于完全相同的程序,这个问题已经被问过至少 5 次了。我将其作为我找到的最旧的副本关闭。
标签: c