You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何这段C++代码输出为433?我预期结果是273

为什么你的C++代码输出是433而不是273?

咱们一步一步拆解这段代码的执行过程,就能彻底搞明白问题出在哪了:

首先看main函数里的初始变量值:

int a=2; int b=7;

这时候main作用域里的a是2,b是7。

接下来是关键的函数调用x(b,a)——这里一定要注意:函数x的参数是引用类型(int &a,int &b),引用传递的不是变量的副本,而是直接绑定原变量的内存地址,也就是说:

  • x函数里的第一个参数a,是main函数里b的"别名"(操作它就等于操作main里的b)
  • x函数里的第二个参数b,是main函数里a的"别名"(操作它就等于操作main里的a)

现在进入x函数执行代码:

a=3; b=4; return a;
  • 第一行a=3:这里的a是x的第一个参数,对应main里的b,所以main里的b被直接改成了3
  • 第二行b=4:这里的b是x的第二个参数,对应main里的a,所以main里的a被直接改成了4
  • 第三行return a:返回的是x的第一个参数(也就是main里的b,当前值是3),所以main里的c被赋值为3

最后回到main函数执行cout<<a<<b<<c;:

  • main里的a现在是4,b现在是3,c是3,连起来输出就是433

总结一下核心问题:你调用x函数时传递的参数顺序是x(b,a),而非预期的x(a,b),再加上引用传递会直接修改原变量,才导致结果和预期不符。如果想得到273,你需要把调用改成x(a,b),或者根据参数绑定关系调整x函数内的赋值逻辑。

内容的提问来源于stack exchange,提问作者Akash papnai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:58:09