C语言高手来帮忙啊

#include <stdio.h>
int f(int a);
int main()
{ int f(int);
int a=2,i;
for(i=0;i<3;i++)
{
printf("%d ", f(a));
}
return 0;
}
int f(int a)
{ auto int b=0;
static int c=3;
b = b+1;
c = c+1;
return (a+b+c);
}

怎么做的啊?详细一点 本人菜鸟

函数执行完,返回值为7,又因为c是静态局部变量,执行完之后值不发生改变,三次循环依次加一,所以789
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-16

/*

7 8 9

Press any key to continue

*/

#include <stdio.h>
int f(int a);
int main() {
// int f(int);
int a = 2,i;
for(i = 0;i < 3;i++) {
printf("%d ", f(a));
}
printf("\n");
return 0;
}

int f(int a) {
auto  int b = 0;
static int c = 3;
b = b + 1;
c = c + 1;
return (a + b + c);
}

第2个回答  2013-08-20
答案应该是7、8、9其中static int c=3这句话只会在第一次进入f(int a)函数时被执行,并且生存周期是整个程序开始到结束。所以c的值是4、5、6。b每次进入f(int a)就会被初始化为0,所以b的值是1、1、1而a的值就是为2,、2、2。所以他们每次的和就是2+1+4,2+1+5,2+1+6
相似回答
大家正在搜