C++中引用变量问题
来源:百度知道 编辑:UC知道 时间:2024/05/16 23:57:01
#include<iostream>
using namespace std;
double refcube(double &ra);
int main()
{
double x=3.0;
cout<<refcube(x);
cout<<"=cube of"<<x<<"\n";
return 0;
}
double refcube(double &ra)
{
ra*=ra*ra;
return ra;
}
我想请问一下这段代码中,
cout<<refcube(x);
cout<<"=cube of"<<x<<"\n";后输出X值为27。
而cout<<refcube(x)<<"=cube of"<<x<<"\n";后输出X值就为3。
请问,这是为什么?感觉上面的两段输出代码的意义是一样的啊
using namespace std;
double refcube(double &ra);
int main()
{
double x=3.0;
cout<<refcube(x);
cout<<"=cube of"<<x<<"\n";
return 0;
}
double refcube(double &ra)
{
ra*=ra*ra;
return ra;
}
我想请问一下这段代码中,
cout<<refcube(x);
cout<<"=cube of"<<x<<"\n";后输出X值为27。
而cout<<refcube(x)<<"=cube of"<<x<<"\n";后输出X值就为3。
请问,这是为什么?感觉上面的两段输出代码的意义是一样的啊
1、引用传递会改变参数的值,这没有错。
所以调用refcube(x)后,小都会变成27。
所以这不是引用的问题。
2、事实是参数传递的问题:函数参数是自右到左传递的。
所以:cout<<refcube(x)<<"=cube of"<<x<<"\n";中传入x时,还没有调用函数,x为3。然后才调用了refcube(x),x才变成了27。
而cout<<refcube(x);
cout<<"=cube of"<<x<<"\n";调用则x传入在调用函数之后,所以是27
3、可以cout<<refcube(x)<<"=cube of"<<x<<"\n";后再次输出x看看,仍然为27
ra*=ra*ra可以写为
ra = ra*(ra*ra)
所以得出的值是3*3*3即27啊