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;

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",k);
}
为什么k输出的是4。a++,的++感觉没作用,我把++删掉结果也是4。这是为什么?

首先f函数中的c是一个静态变量,生命周期是全局的,
这里c的3是以初值形式赋予的,所以只有第一次执行f()的时候赋为3,
所以执行循环的时候:
i=0时,a=2,先取值后++,f(2),a=3;f函数内a=c++,先取值后++,a=3(这个a的作用于在函数f内,不影响外部的a),c=4,最后的a被return给k;k=3;
i=1时,a=3,先取值后++,f(3),a=4;f函数内a=c++,先取值后++,a=4,c=5,a被return给k,k=4。
i=2时,循环结束。
最后输出k为4。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-26
int f(int a)
{
int b=0;
static int c=3;
a=c++,b++;
return(a);}

因为在函数f里面,nt a的初始值根本值根本就没有用的。
a=c++,b++;的值就是4。返回值也就是4。最后排印的k的值就是4了。本回答被提问者采纳