猿问

答案是选择 15,35 请问为什么不是 14,4 ?

下面程序运行后,其输出是( )
int x,y;
one()
{int a,b;
a=25,b=10;
x=a-b;y=a+b;
}
main()
{int a,b;
a=9,b=5;
x=a+b;y=a-b;
one();
printf(“%d,%d\n”,x,y);
}
(因为调用one函数,是实参传递给形参,单向传递,为什么不对???)

慕后森
浏览 87回答 3
3回答

慕仙森

全局引用的关系,任何的子函数都可以改变其值。如果改成int x,y;one(){int a,b;a=25,b=10;x=a-b;y=a+b;}main(){int a,b;int x,y;a=9,b=5;x=a+b;y=a-b;one();printf(“%d,%d\n”,x,y);}结果就是14,4了

慕莱坞森

是单向传递不错,但x和y是全局变量,不是你通过参数传递过去的,全局变量可以供所有的函数使用也就是你one和main中使用x和y其实是同一个x和y而不是one和main自己定义的x和y,one中改变了x和y的值则main中的x和y也会随之改变。

慕尼黑5688855

需要注意的是:int x,y;这个是定义一个全局变量最后printf(“%d,%d\n”,x,y); 输出的也是全局变量你在one(){}这个方法里面对x,y进行了赋值,所以输出的结果是15,35
随时随地看视频慕课网APP
我要回答