C语言练习题,关于自定义函数,然后运算,求解释


#include<stdio.h>
 int acc(int n)

 {
     static int f;
     f=f+n;
     return f;
     
 }
 int main(){
     
     int i;
     for(i=1;i<=5;i++)
     printf("%d",acc(i));
     return 0;
 }

以上是程序,运行结果是:1361015
我的思路是i是n 然后f的值从哪里来呢?

f=f+n; f的值为累加n的值,还有什么地方不清楚呢

static int f的问题导致了f一直存在,你去看一下static的定义应该就明白了

static 定义的静态变量,编译时赋初值(如果没指定,默认是0),并且只赋初值一次,生存期一直到程序运行结束。