作业帮 > 综合 > 作业

【c语言】以下程序的输出结果为什么是8,17?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/18 03:09:11
【c语言】以下程序的输出结果为什么是8,17?
#include
int f(int,int)
main()
{ int k=4,m=1,p;
p=f(k,m);printf("%d,",p);
p=f(k,m);printf("%d\n",p);
}
int f(int a,int b)
{static int m,i=2;
i+=m+1;m=i+a+b;return(m);
}
我觉得输出应该是8,16
第二次调用f时,a和b是多少?f里的m是多少?
输出是8,17 没错
因为函数f中的m和i都静态变量(static)
第一次调用开始的时候i和m都是2 . 调用结束后i=3,m=8
那么第二次调用开始的时候,i=3,m=8(因为i和m都是静态变量),而调用结束时 i=4 m=17