【c语言】以下程序的输出结果为什么是8,17?#includeint 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
来源:学生作业帮助网 编辑:作业帮 时间:2024/08/30 04:13:39
【c语言】以下程序的输出结果为什么是8,17?#includeint 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
【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是多少?
【c语言】以下程序的输出结果为什么是8,17?#includeint 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
输出是8,17 没错
因为函数f中的m和i都静态变量(static)
第一次调用开始的时候i和m都是2 . 调用结束后i=3,m=8
那么第二次调用开始的时候,i=3,m=8(因为i和m都是静态变量),而调用结束时 i=4 m=17