c语言中,以下程序的输出结果是什么?

int d =1 ;
fun ( int p )
{
static int d = 5 ;
d + = p ;
printf ("%d" , d ) ;
return ( d ) ;
}
mian ( )
{
int a = 3 ;
printf ( "%d\n" , fun ( a + fun ( d ) ) ) ;
}
提问:
1、以上程序运行结果是什么?
2、求详细步骤过程

6 15
这是我一步步想出来的。这题是考查对变量作用域的!
首先,main 函数中的d 就是int d = 1的这个d .所以
printf ( "%d\n" , fun ( a + fun ( d ) ) ) ;
相当于 printf("%d\n", fun(a + fun(1))) ;
这样子就调用了fun(1) ;
在fun函数中的d则是static int d = 5这个d,因为这个d是在函数内部,优先于int d = 1 ;的这个全局变量。而且这个d(FUN中的)是static型的,即静态型的,退出FUN之后,他的值会保留到下次再调用这个函数时!
温馨提示:答案为网友推荐,仅供参考