下面的代码最终结果为什么是-10?去掉这个函数中的static则结果是-2可以理解,请教一下加了static后这个变量在函数的多次调用中是如何变化的
int fun()
{
static int a = 1;
return ++a;
}
int main()
{
int b;
b = fun()-fun()*fun();
printf("%d\n",b);
return 0;
}
下面的代码最终结果为什么是-10?去掉这个函数中的static则结果是-2可以理解,请教一下加了static后这个变量在函数的多次调用中是如何变化的
int fun()
{
static int a = 1;
return ++a;
}
int main()
{
int b;
b = fun()-fun()*fun();
printf("%d\n",b);
return 0;
}
这个跟static无关,跟计算的顺序有关,首先第一个fun=2进入堆栈,但是,由于后面是减号,应该先计算乘法,fun数值为2在堆栈中,
后面的乘法好理解一个是3,一个是4,最终的结果是2-3*4=-10