#include <stdio.h>
int fun(int n)
{
static int a =3;
int t =0;
if(n%2)
{
static int a =4;
t+=a++;
}
else
{static int a =5;
t+=a++;
}
return t+=a++;
}
main()
{
int i,s=0;
for (i=0;i<3;i++)
s+=fun(i);
printf ("%d\n",s);
}
这个static int a =4;和static int a =3;有没有被执行,为什么 求大神
用static声明的变量是静态变量,比如static int a =4;这个a的初始值为4(仅仅是初始值),并且这个变量是一直存在的。
几个a并不是同一个a,我们可以把程序中的a改一下名字,方便理解。如下:
#include <stdio.h>
int fun(int n)
{
static int a =3;
int t =0;
if(n%2)
{
static int b =4;
t+=b++;
}
else
{static int c =5;
t+=c++;
}
return t+=a++;
}
main()
{
int i,s=0;
for (i=0;i<3;i++)
s+=fun(i);
printf ("%d\n",s);
}
开始在稿纸上分析。
那后面的两个static执行了吗
追答这两个static都执行了
追问那我算下是33 运行下来是 27
追答static int a =3;作用域为整个fun函数
static int a =4;作用域为if为真时
static int a =5;作用域为if为假 也就是else的时候
所以循环运行3次为8+8+11
静态局部变量的特点,静态是说,在同一个进程中第二次调用是上次运算过的值,局部变量是在函数内部,包括main函数内部声明的变量。。。