#include <stdio.h>
int a=2;
int f(int m)
{
static int n;
n=0;n++;a++;
return n+m+a;
}
main()
{
int k;
for(k=0;k<4;k++)
printf("%d,",f(k));
return 0;
}
输出结果是4,6,8,10,
解析里面写的是,每次调用函数时,a的值都是3
既然a是全局变量,那它应该是静态的,所以我觉得a的值应该是3,4,5,6啊,输出结果应该是4,7,10,13,才对啊
静态变量不是只能在第一次调用的时候赋初值吗?以后每次调用函数的时候不再赋值而是保留上次函数调用结束后的值
追答static int n=0; //只有在这里定义时,赋值才只做一次,
而你代码中的单独的n=0是一个单独的赋值语句,这句操作,使得这个静态变量每次都变成0了!
也就是说static int n=0是进行初始化,而这个题目里面是进行的赋值吗
追答是的,你说中了
本回答被提问者采纳int a=2是放在函数外面的啊