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

C++函数如何同时返回两个值?现有求和求积函数仅返回单个值

问题原因

C++原生语法不支持单个函数同时返回多个值:

  1. 你代码中return sum, product;使用了逗号运算符,只会返回逗号最右侧的表达式结果,本质上这种写法本身就无法实现多返回值,你当前只拿到和属于逗号表达式求值顺序导致的偶然结果。
  2. 额外添加多个return语句也无法解决问题,函数执行到第一个return语句就会直接退出,后续逻辑不会运行。
可行解决方案

以下是C++实现多值返回的3种常用方案:

  • 方案1:通过引用传参带出结果
    这是兼容性最高、最常用的实现方式,通过引用参数直接修改外部传入的变量,不需要额外定义结构:
#include <iostream>
using namespace std; 
// sum和product为引用参数,函数内修改会直接同步到外部变量
void Product_Sum(int x, int y, int z, int& sum, int& product)
{
    sum = x + y + z;
    product = x * y * z;
}

int main() {
    int sum, product;
    int x = 5, y = 10, z = 15;
    Product_Sum(x, y, z, sum, product);
    cout << "和:" << sum << ",积:" << product << endl;
    return 0;
}
  • 方案2:返回自定义结构体
    适合返回值关联度高、需要封装的场景,逻辑可读性更强:
#include <iostream>
using namespace std; 

// 自定义结构体封装两个返回结果
struct CalcResult {
    int sum;
    int product;
};

CalcResult Product_Sum(int x, int y, int z)
{
    CalcResult res;
    res.sum = x + y + z;
    res.product = x * y * z;
    return res;
}

int main() {
    int x = 5, y = 10, z = 15;
    CalcResult res = Product_Sum(x, y, z);
    cout << "和:" << res.sum << ",积:" << res.product << endl;
    return 0;
}
  • 方案3:C++11及以上版本返回std::pair/std::tuple
    不需要自定义结构体,直接使用标准库提供的容器实现,写法更简洁:
#include <iostream>
#include <utility> // std::pair头文件
using namespace std; 

pair<int, int> Product_Sum(int x, int y, int z)
{
    int sum = x + y + z;
    int product = x * y * z;
    return {sum, product}; // C++11及以上支持列表初始化返回
}

int main() {
    int x = 5, y = 10, z = 15;
    auto res = Product_Sum(x, y, z);
    cout << "和:" << res.first << ",积:" << res.second << endl;
    // C++17及以上还可以用结构化绑定简化写法:auto [sum, product] = Product_Sum(x,y,z);
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 13:15:08