该程序的输出为4 3 2 1。 当没有条件给我时,为什么它停在1? main(10)和main(i)有区别吗?
#include <stdio.h>
int main()
{
static int i = 5;
if (--i){
printf("%d ", i);
main(i);
}
}
答案 0 :(得分:4)
您实际上有一个条件:
if (--i)
等效于if(--i != 0)
答案 1 :(得分:1)
等效代码
#include <stdio.h>
int main()
{
static int i = 5;
i = i - 1;
if (i != 0){
printf("%d ", i);
main(i);
}
}
堆栈跟踪
i=5, print 4, call main(4)
i=4, print 3, call main(3)
i=3, print 2, call main(2)
i=2, print 1, call main(1)
i=1, if(i--) is false, returns
returns
returns
returns
returns