我才学完C..........学的还不是很深.不过我是经过专业培训的.编码规范什么的都还是有的
以下是引用inku在2006-8-21 22:26:16的发言:
以下程序的输出结果是
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
我是这样想的,fun(d)=fun(1)=6 a+fun(d)=9 fun(9)=5+9=14,答案怎么会是c,怎么也想不通
以下程序的输出结果是
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
我是这样想的,fun(d)=fun(1)=6 a+fun(d)=9 fun(9)=5+9=14,答案怎么会是c,怎么也想不通
第二次调用的时候,既调用fun(9)的时候,d=6(因为它刚刚已变为6),而不是5,至于为什么,最好去看看书,
关于静态static的作用............