#include<stdio.h>
int f(int a)
{
int b=0;
static int c=3;
a=c++,b++;
return(a);
}
void main()
{
int a=2,i,k;
for(i=0;i<2;i++)
k=+f(a++);
printf("%d\n",k);
}
怎么运算的,结果是4
#include<stdio.h>
int f(int a)
{
int b=0;
static int c=3;
a=c++,b++;
return(a);
}
void main()
{
int a=2,i,k;
for(i=0;i<2;i++)
k=+f(a++);
printf("%d\n",k);
}
怎么运算的,结果是4
当i=0时,运行f(a++),此时a++取2,a=3.函数中a=c++,b++;a取3,c=4,所以函数返回3,k=f(a++)=3;
当i=1时,运行f(a++),此时a++取3,a=4.函数中a=c++,b++;注意c是静态的所以c=4(保持上次运算结果),所以函数返回4,k=f(a++)=4;
注意这边是k=+f(a++)而不是k+=f(a++);所以K每次被重新赋值
c++ 实现使用后加
第一次 运行 是i=0 k=3 这个时候 c=c+1也就是 c在此时为4 然后运行i=1
同样的 c先使用 就是上边的4 输出的k就是4 而此时 c本身c+1 得到了5