【发布时间】:2017-08-01 14:25:21
【问题描述】:
为什么静态变量a的值即使在return语句之后也不递增?
#include<stdio.h>
int p(int x);
int main()
{
int r=p(4);
printf("%d",r);
return 0;
}
int p(int x)
{
static a=1;
printf(" x = %d,a= %d\n",x,a);
if(x<=1)
{
return 1;
}
else
{
printf(" x = %d,a= %d\n",x,a);
return p(x-1)+x+a++;
printf(" x = %d,a= %d\n",x,a);
}
}
在这里,当我打印静态变量 a 时,它的值始终为 1。但根据我读到的理论,它应该在每次递归调用后递增。
【问题讨论】:
-
什么是静态a?我认为这将是静态 int a ..
-
static变量的默认数据类型为int。 -
注意:
return p(x-1)+x+a++;后面的printf(" x = %d,a= %d\n", x, a);无关紧要。
标签: c recursion output increment