请教高手!下面的答案是多少啊?帮忙分析一下哦,我都看不懂哦

2025-12-06 04:54:15
推荐回答(1个)
回答1:

执行一次fun()就输出一次
fun(d) 一次
fun(a+fun(d)) 二次
main()输出 三次

根据参数求值顺序来计算

先执行fun(d)
得到fun(d)=fun(1)=6,输出6

执行fun(a+fun(d))
得到fun(a+fun(d)) = fun(3+6) = fun(9) = 15,输出15

main()输出 15

6 15 15

fun(int p)
{
static int d=5; /* 这里的d是局部静态变量,会屏蔽全局变量d,第一次调用函数fun()时,d=5,以后调用就是上次调用之后d的值(静态,所以不会重新赋值) */
d+=p;
printf("%d",d);
return(d);
}