【发布时间】:2019-09-01 09:37:21
【问题描述】:
我正在尝试理解这段代码,但我不知道为什么静态变量的数量有时会改变,有时不会。
#include <stdio.h>
int func1 (int x)
{
extern int a;
static int y=0;
printf("%d\n%d\n",a,y);
a=x+5; y=x+1;
{int y=10; printf("%d\n",y);}
return y;
}
int a;
int main()
{
a=func1(1);
printf("%d\n",a);
{
int a=1;
printf("%d\n", a);
}
a=func1(a);
printf("%d",a);
return 0;
}
这是输出:
0
0
10
2
1
2
2
10
3
首先,当a = func(1) 运行时,y 被声明为0,然后更改为2 并打印2。但是当它运行a = func(a) 而a 是2 时,我预计y 将变为0 到static int y = 0 但y 不会改变。为什么没有发生?
【问题讨论】: