#include<stdio.h>
int func(int,int);
main()
{
int k=4,m=1,p;
p=func(k,m);printf("%d,",p);
p=func(k,m);printf("%d\n",p);
}
int func(int a,int b)
{
static int m,i=2; //这里m没有给初值,因为是static int变量,所以初值为0 i=2 而且在整个程序运行中,这里的操作只会做一次。下一次调用本函数,m i都会是上一次的“残留”值
i+=m+1; //第一次i=2 ,m=0 , m+1=1 i+=1 = 3
m=i+a+b; //m=3+4+1=8
return(m); //返回8
}
//分析第二次调用
int func(int a,int b)
{
static int m,i=2; //第二次调用本函数,这里无效
//此时 m i是上一次的“残留”值 m=8 i=3
i+=m+1; //i=3 ,m=8 , m+1=9 i+=9 = 12
m=i+a+b; //m=12+4+1=17
return(m); //返回17
}
温馨提示:答案为网友推荐,仅供参考