请C语言高手帮忙分析一下下面这个程序,为什么我算出来是1,2,3 而答案是1,3,2呢 求详解啊

void f(int v , int w)
{
int t;
t=v;v=w;w=t;
}
main( )
{
int x=1,y=3,z=2;
if(x>y)
f(x,y);
else if(y>z)
f(y,z);
else
f(x,z);
printf("%d,%d,%d\n",x,y,z);
}

f 函数是按值传递的 函数内部交换不影响外部的变量 所以还是1 3 2
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-19
全部正解,可以解引用
void f(int &v, int &w) 这样就好了

其实也不必这么麻烦
直接 max = a > b ? a : b;
min = a < b ? a : b本回答被网友采纳
第2个回答  2012-09-19
void f(int v , int w)这个函数不会改变传入参数的值
第3个回答  2012-09-20
调用f()函数

把x的值传递给f()函数里的形参v,
把y的值传递给f()函数的形参w
形参的值改变不影响调用函数的参数,即x,y的值

f()没有返回值
第4个回答  2012-09-19
那个f函数只能换变量,而你使用该函数是给点主体x=1,y=2即那函数是f(1,3)不能改变想x,y的值。
第5个回答  2012-09-19
你使用的参数不是指针或引用,在你的那个方法中改的是形参而非实参所以结果没变。
第6个回答  2012-09-19
因为f函数中的形参是值传递,而不是地址传递,所以x,y,z的值都不会改变。
相似回答