【发布时间】:2015-12-30 14:58:05
【问题描述】:
#include <stdio.h>
int main()
{
static int i = 5;
if(--i){
main();
printf("%d,", i);
}
return 0;
}
我无法找到为什么i 的值每次都变为 0。
【问题讨论】:
-
递归
main()....我不喜欢奇怪的东西.. :) -
变为零是因为你减少了?问题是否可能是您对
static局部变量如何工作的理解?也许是理解递归的问题?为了更好地理解递归,您应该学习如何使用调试器以及如何逐行跳过代码,更重要的是逐步进入函数调用。这样做,它就会变得清晰。 -
将if中的2行切换一下看看会发生什么
-
逐行写出代码,将
main替换为实际执行的代码,这样你就得到了1个程序函数。这会有意义 -
在
main中有一个static int没有什么意义,除非它递归,这是不明智的行为。