快来拿分哦

a_stupid_boy 2003-07-25 08:22:28
#include "stdafx.h"

int cal(int a, int b ,int &sub)
{
sub = a - b ;
return a + b ;
}

int main(int argc, char* argv[])
{
int a ,b ,c =0 ;
a =3 ;
b =4 ;
cout << cal(a,b,c ) << endl << c << endl ;
return 0;
}

为什么输出c的值为0,而不是-1啊,引用不是按地址传递的吗?
...全文
29 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
a_stupid_boy 2003-07-25
  • 打赏
  • 举报
回复
thx,我怎么忘记了顺序方面的问题呢,唉!
pengzhenwanli 2003-07-25
  • 打赏
  • 举报
回复
刚才试了一下,确实如此。
一直以为C++里的cout不会有这种问题。没想到也有。
学习学习。多谢提醒。
晨星 2003-07-25
  • 打赏
  • 举报
回复
你可以这样试试:
cout << c << endl << cal(a,b,c ) << endl;
结果应该是不一样的。
晨星 2003-07-25
  • 打赏
  • 举报
回复
使用cout的“<<”做连续输出时,各个参数的计算顺序是从右到左。大部分编译器都是这样的,也就是说在计算cal(a,b,c)之前,c的值已经被作为参数压栈了。

69,379

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧