C语言基础题,求大神指点啊

#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;
i+=m+1;m=i+a+b;return(m);
}输出结果为8,17 8理解,但是17不理解啊 为什么我求的是16

#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
}

温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜