c++ 小程序运行结果问题

来源:百度知道 编辑:UC知道 时间:2024/05/18 07:56:17
What will be printed as the result of the operation below:

int x;
int modifyvalue()
{
return(x+=10);
}
int changevalue(int x)
{
return(x+=1);
}

void main()
{
int x=10;
x++;
changevalue(x);
x++;
modifyvalue();
printf("First output:%dn",x);
x++;
changevalue(x);
printf("Second output:%dn",x);
modifyvalue();
printf("Third output:%dn",x);

}

Answer: 12 , 13 , 13
我不太明白,难道调用的两个函数对x的值没有影响吗?为什么啊?我认为结果是23 25 35,但是这是不对的,请大侠指点迷经!!

1.
int x;
int modifyvalue() //没有参数,引用的是全局变量x,而不是程序中定义的int x=10
{
return(x+=10);
}
2.printf("Second output:%dn",x);//%d\n?输出的是程序中定义的x,不是全局变动::x
3.
changevalue(x); //有参数x
x++;
modifyvalue(); //可看到区别了?没有参数

就是这样的了。。

三个printf显示的都是main()主函数的全局变量x,你传入另外两个函数的是全局变量x的值并不是它的地址。
要想出现你说的那三个结果好像的在变量X前面加*,如int *x。
仅供参考!