我想问下这个怎么算的呀?

img

我是这样理解的:
首先,静态int变量i=0,因为它是静态变量,所以它在程序运行时一直存在,它每次调用一次,值就增加1,所以它调用5次的参与运算的值,依次为:0,1,2,3,4。
然后,f函数的局部变量s的值每次参与运算前都被重新赋值为1。
结合上面两步,调用五次f函数,返回的值就是上面两步里的s加上i的值,其和分别是:1,2,3,4,5.
可以在s+=i后面加一句打印语句,观察s和i的值的变化:printf("i=%d,s=%d\n",i,s);
所以,main函数里面的a把五步调用的值累加就是15.

f函数中i是静态变量,只能赋初值一次,所以i会一直++,而s是自动变量,每次都是重新赋初值为1。
主函数循环五次。
所以s的值是1 2 3 4 5,最后结果是1+2+3+4+5=15