C语言,求过程?

14.以下程序的输出结果是( )。
int d=1;
fun(int p)
{ static int d=5;
d+=p;
printf("%d ",d);
return(d);
}
main( )
{ int a=3;
printf("%d \n",fun(a+fun(d)));
}
(A) 6 9 9 (B) 6 6 9 (C) 6 15 15 (D) 6 6 15

选C。
---
1、main中,fun(a+fun(d))的d是全局变量d=1,即:fun(3+fun(1))
2、fun中的d是局部静态变量,即这个d只在fun函数中可访问,但是不随函数fun结束而销毁
2.1、fun(1):d=5;p=1;d+=p使得d=6,输出:6,返回值6
2.2、fun(3+fun(1))即fun(3+6)即fun(9):d=6;p=9;d+=p使得d=15,输出15,返回值15
2.3、main函数printf再输出fun(9)的返回值,即15
因此,整个程序输出值为:6 15 15
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-03-14
(C) 6 15 15
有 C语言环境,复制代码调试就知道了