(1)
#include<stdio.h>
int main(){
long fac(int);
for(int i=1;i<10;i++)
printf("%d!=%ld\n",i,fac(i));
}
long fac(int x){
static long p=1;
return p=p*x;
}
分析:在主函数中定义i=1,在循环中当i<10时,先输出i!=fac(i),i的值根据上面循环来定,在函数fac(i)中先把i的值带入函数中的x中去,定义了静态函数p=1(p不随函数的循环重新定义),返回p=p*x到fac(i)里面,再进行i++,最后返回循环判断i是否小于10,如果是就继续循环、不是就结束循环。
(2)
#include<stdio.h>
int main(){
long fac(int);
for(int i=1;i<10;i++)
printf("%d!=%ld\n",i,fac(i));
}
long fac(int x) {
long p=1;//或 auto long p=1;
return p=p*x;
}
分析:在主函数中定义i=1,在循环中当i<10时,先输出i!=fac(i),i的值根据上面循环来定,在函数fac(i)中先把i的值带入函数中的x中去,定义了长整型p=1(p随函数的循环重新定义),返回p=p*x到fac(i)里面,再进行i++,最后返回循环判断i是否小于10,如果是就继续循环、不是就结束循环。
(3)
#include<stdio.h>
long p=1;
int main(){
long fac(int);
for(int i=1;i<10;i++)
printf("%d!=%ld\n",i,fac(i));
}
long fac(int x) {
return p=p*x;
}
分析:这次p定义在了最开始既不在主函数也不在子函数中,因此p的值会随着子函数而变动,在主函数中定义了i=1,在循环中当i<10时,先输出i!=fac(i),i的值根据上面循环来看,在函数fac(i)中先把i的值带入函数中的x中去,返回p=p*x到fac(i)里面,再进行i++,最后返回循环判断i是否小于10,如果是就继续循环、不是就结束循环。