C语言,求过程?
以下程序的输出结果是A)699B)669C)61515D)6615intd=1;fun(intp){staticintd=5;d+=p;printf("%d",d);re...
以下程序的输出结果是
A)699 B)669 C)61515 D)6615
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)699 B)669 C)61515 D)6615
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))) ; } 展开
1个回答
展开全部
由于fun中的d与全局变量d重名,编译器不会认为这是同一个变量,因此两个变量没有关系,在fun中出现的变量d都不是全局变量。为清晰起见,咱们修改一下这个fun程序:
int fun(int p) { static int dd=5; dd+=p; printf("%d",dd); return dd; }
执行过程:
d=1,a=3
fun(d): p=1, dd=5;[dd=5], dd+=p;[dd=5+1=6], printf输出[6], return dd;[返回值为6]
a+fun(d)=3+6=9
fun(a+fun(d)): p=9, dd+=p;[dd=6+9=15], printf累计输出[615], return dd;[返回值为15]
printf输出15,累计输出[61515]
int fun(int p) { static int dd=5; dd+=p; printf("%d",dd); return dd; }
执行过程:
d=1,a=3
fun(d): p=1, dd=5;[dd=5], dd+=p;[dd=5+1=6], printf输出[6], return dd;[返回值为6]
a+fun(d)=3+6=9
fun(a+fun(d)): p=9, dd+=p;[dd=6+9=15], printf累计输出[615], return dd;[返回值为15]
printf输出15,累计输出[61515]
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询