为什么全局变量a不是static,但是他也是从5变成4,从4变成3,而其他不是static的变量就一直是原来的数减1?

#include <stdio.h>
int a=5;
int func(int d)
{
int b=5;
static int c=5;
a--; b--; --c; --d;
return a+b+c+d;
}
main()
{
int k, a=4;
for (k=0; k<3; k++)
printf("%d,", func(a--));
}
程序执行后的输出结果是()

img


为什么全局变量a和b都不是static变量,但是a一直在变呢?

全局变量,顾名思义,整个程序运行期间一直有效

为什么?那要看静态局部变量的解释了:
静态局部变量使用static修饰符定义,即使在声明时未赋初值,编译器也会把它初始化为0
静态局部变量存储于进程的全局数据区,即使函数返回,它的值也会保持不变。

希望对题主有所帮助!可以的话,帮忙点个采纳!