问题 填空题

以下程序的输出结果是______。
#include<stdio.h>
int fun(int x, int y)
static int m=0, i=2;
i=i+1;
m+=i+x+y;
return m

main()
int j=4, m=1, k;
k=fun(j, m);printf("gd," , k);
k=fun(j, m); printf("%d\n", k)

答案

参考答案:8,17

解析: 因为在fun中,m、i都是静态局部变量,因此其生存期是直到整个程序的结束,当执行第一个k=fun(j,m)时,返回值m+i+x+y其中x+y=j+m, m=0+3+4+1=8,接着再次执行k=fun(j, m)后,返回值m=4+8+4+1=17。

单项选择题
单项选择题