15、下列程序执行后输出的结果是(     )。 int d=1; fun (int p) { int d=5; d

15、下列程序执行后输出的结果是(     )。
int d=1;
fun (int p)
{ int d=5;
d + =p + +;
printf("%d,",d); }
main( )
{ int a=3;
fun(a);
d + = a + +;
printf("%d\n",d); }
A. 8, 4      B. 9, 6    C. 9, 4    D. 8, 5

选择A,理由:int d=1;这个变量d是一个全局变量,但是你fun方法里面又重新定义了一个相同名字的变量,这个变量就是局部变量,根据就近原则,那个全局变量d的值没有改变,只有局部变量d的值改变, 还有p++是先赋值后自增,你在main方法里面传入是变量a,而变量a的值是3,所以fun方法里面应该是这样的过程:d+=3,而变量d的初始值是5,所以这一句执行后变量d的值是8,在main方法里面,你没有定义变量d,这时候就使用的是全局变量d的值,也就是d + = a + +;应该是d+=3,因为全局变量d的初始值是1,所以这时候变量d的值就是4,所以输出8,4
温馨提示:答案为网友推荐,仅供参考