这个程序是怎么进行的?请详细解释下.谢谢.

来源:百度知道 编辑:UC知道 时间:2024/05/11 01:11:31
int f()
{
static int i=0;
int s=1;
s+=1;i++;
return s;
}
main()
{
int i,a=0;
for(i=0;i<5;i++) a+=f();
printf("%d\n",a);
}

函数f返回的是s,所以我们只要关注s的值。每次调用函数f。s都被重新初始化为1,s+=1等价于s=s+1;这时s的值变为2;i++并没有影响S的值,所以S还是2. return s则把S的值返回。(记住每次调用函数F返回的都是2,逻辑上可以直接把函数F和2等价)

主函数中循环5次调用函数F,每次调用F他返回的都是2,a+=f(),就等于a+=2即a=a+2

此时
for(i=0;i<5;i++) a+=f();
就等于
for(i=0;i<5;i++) a+=2;

a初值为0,每循环一次a就加上2,5轮后a的值就等于10;

由于i是被声明为静态型,所以他不会想S一样每次调用函数F就被初始化。所以此时i的值为5(每循环一次i都会对自身加1)

f()中的i是静态的,就是说每次f()调用完成后,i不被销毁,它的值仍然保存。剩下的应该很好理解了吧。