C语言static的用法?

#include<stdio.h>

int fun(int n){
static int f=1;
f=f*n;
return f;
}

void main(){
int i;
for(i=1;i<=5;i++)
printf("fun(%d)=%d\n",i,fun(i));
}

为什么显示



如何计算?

static 型变量只初始化一次,第一次调用fun函数时,f初始化为1,运行完后f仍为1;第二次调用时f的值还是1,不再初始化,于是f在fun运行完后变为2,这样依次完成所有循环,每次计算f时,都沿用上一个循环的f值
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-09-07
static int f = 1; 该语句无论循环多少次,只会执行第一次,也就是说,第一次初始化为f=1;
第二次进入循环的时候 就意味着将static int f = 1;这句话屏蔽掉了
第2个回答  2015-09-07
第一次:f=1,i=1,f=f*n=f*i=1*1=1;
第二次:f=1,i=2,f=f*n=f*i=1*2=2;
第三次:f=2,i=3,f=f*n=f*i=2*3=6;
第四次:f=6,i=4,f=f*n=f*i=6*4=24;
第一次:f=24,i=5,f=f*n=f*i=24*5=120。
相似回答