设有以下函数; (答案是 A) ,为什么?)

设有以下函数;
f(int a)
{ int b=0;
static int c=3;
b++;c++;
return(a+b+c);
}
如果在下面的程序中调用该函数,则输出结果是______。
main()
{ int a=2, i;
for(i=0;i<3;i++) printf("%d\n",f(a));
}
A) B) C) D)
7 7 7 7
8 9 10 7
9 11 13 7

第1个回答  2008-03-15
因为C是静态变量.
当i为0时,调用函数后,a=2,b=1,c=4,返回7
当i为1时,调用函数后,a=2,b=1,c=5,返回8
当i为2时,调用函数后,a=2,b=1,c=6,返回9
所以最后输出
7
8
9
第2个回答  2008-03-15
第一次循环:f(a)=f(2)=2+(++0)+(++3)=2+1+4=7
第二次循环:f(a)=f(2)=2+(++0)+(++4)【此时c值保留上回合的值4】=8
第三次循环:c值保留上回合的值5,结果是9本回答被提问者采纳
第3个回答  2008-03-15
每次输出的结果都是7,一共输出四次。
每次执行函数f(int a)时,在函数f(int a)内部,由主函数传递的参数a=2,每次都给b、c赋值,所以每次b、c都是一样的,b=0,c=3。执行完语句
b++;c++;
后,a=2,b=1,c=4。
a+b+c=7.
第4个回答  2008-03-15
static int c=3;

static 只初始化一次,
后面就是调用一次执行一次c++;
第一次调用后 C=4;
第二次调用后 C=5;
第三次调用后 C=6;
相似回答