C++里cout输出的问题

在看C++primer的书,里面有个引用传递求x=3的立方的例子。我把这个cout<<refcube(x)<<endl<<x;输出27,3写成2行cout<<refcub... 在看C++primer的书,里面有个 引用传递 求x=3的立方的例子。
我把这个cout<<refcube(x)<<endl<<x; 输出 27,3

写成2行
cout<<refcube2(x)<<endl; 输出 27,27
cout<<x;

为什么x的输出不一样呢。书上用的2行,我想省就写了一行。
展开
 我来答
匿名用户
2013-09-30
展开全部
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
Primeprime
2013-09-30 · TA获得超过1756个赞
知道小有建树答主
回答量:443
采纳率:0%
帮助的人:263万
展开全部
记得Printf()函数中的语句输出是右结合性,这里的COUT<<也具有右结合性
c程序算法
#include "iostream.h"
int main()
{int x=5,y;
y=++x;
cout<<y<<y++<<++y<<y++<<endl;
return 1;
}
答案是:9886
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lch743
2013-09-30 · TA获得超过1181个赞
知道小有建树答主
回答量:377
采纳率:50%
帮助的人:369万
展开全部
估计refcube2这个函数是引用传递的吧,八成在函数里对x进行了修改,然后还是引用传递的,所以实际的x也变化了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式