解析如下:
#include <stdio.h>
func(int a,int b)
{
static int m = 0,i = 2;
i += m+1;
m = i+a+b;
return m;
}
void main()
{
int k =4,m=1,p;
p = func(k,m);
//func 后传入 4,1 注意 m和i是静态变量,只初始化一次,生存周期随main函数。
// i += m +1 等价于 i = i + m + 1; 此时 i值为2+0+1=3
// m 值为 3+4+1 = 8 返回8 p的值为8
printf("%d",p); //打印8
p = func(k,m);
//第二次调用,因为 m 和 i 是静态变量, 上一次的i值为 3,m 值为 8
//传入4,1 后 i += m + 1 值为 3+8+1 = 12
//m值为 12 + 4 + 1 = 17 返回17 p的值为17
printf("%d",p); //打印17
}