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。

请问,这是为什么?感觉上面的两段输出代码的意义是一样的啊

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啊