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

C++逗号表达式返回值疑问:为何return(a,b)仅返回第二个值

为什么C++中(a, b)这类表达式只返回第二个值?

嘿,这个问题其实是C++里逗号运算符的特性导致的,我来给你掰扯明白~

在C++里,逗号运算符(,)是优先级最低的运算符之一,它的行为规则很明确:

  • 它会从左到右依次执行逗号分隔的所有表达式
  • 执行完所有表达式后,整个逗号表达式的结果是最后一个表达式的返回值,前面所有表达式的计算结果都会被直接丢弃

结合你写的代码来看:

int a = (kk, ll);

这里的(kk, ll)就是一个标准的逗号表达式:

  1. 先计算kk的值(也就是ii+jj的结果7),但这个值不会被用到,直接丢弃
  2. 接着计算ll的值(也就是ii*jj的结果12)
  3. 整个表达式的结果就是12,所以a最终被赋值为12,后续的输出和函数返回自然都是12啦

同理,如果写return(a, b),本质也是在返回一个逗号表达式的结果,最终只会返回b的值。

如果你的需求是想同时返回多个值,逗号表达式肯定满足不了,这时候可以用C++里的std::pair、std::tuple或者自定义结构体来实现,比如:

#include <iostream>
#include <utility> // 用于std::pair
using namespace std;

pair<int, int> addmult(int ii, int jj);

int main() {
    int i = 3, j = 4;
    auto result = addmult(i, j);
    cout << "和:" << result.first << "\n积:" << result.second;
}

pair<int, int> addmult(int ii, int jj) {
    int kk = ii + jj;
    int ll = ii * jj;
    return {kk, ll}; // 返回一对值
}

内容的提问来源于stack exchange,提问作者김민겸

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 17:27:45