Я пытаюсь понять этот фрагмент кода, но я не знаю, почему количество статической переменной иногда меняется, а иногда нет.
#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
не изменится.Почему этого не происходит?