我想知道为什么当我喜欢return(a,b)时只返回b


#include <iostream>
using namespace std;
int addmult(int ii, int jj);
int main() {
int i = 3, j = 4, k, l;
k = addmult(i, j); // 12
l = addmult(i, j); // 12
cout << k << "n" << l; // 12 12 
}
int addmult(int ii, int jj) {
int kk, ll;
kk = ii + jj; // 7
ll = ii * jj; // 12
int a = (kk, ll);
cout << "a = " << a << endl; // 12
return a;
}; 

你好,我想知道为什么当我这样返回时输出结果是12。我像这样返回了(val1, val2),但是我发现只返回了b。

当你有一个表达式(kk, ll)时,它不会创建一个元组。相反,它计算两个表达式并返回ll的值。因此,addmult函数最终只返回该值。

STL中有std::pair数据类型,可以让您返回两个值。

std::pair<int, int> addmult(int ii, int jj) {
int kk, ll;
kk = ii + jj; // 7
ll = ii * jj; // 12
std::pair<int, int> a {kk, ll};
cout << "a = " << a.first << ", " << a.second << endl;
return a;
}

如果您希望有多个返回值和可读的代码。然后将自己的返回类型定义为一个结构体。(对于配对,我总是不得不回顾第一个和/或第二个的意思。)

#include <iostream>
// declare a struct that can hold all your return values
// and give them readable names.
struct addmult_result_t
{
int addition;
int multiplication;
};
// do your calculation and return the result
addmult_result_t addmult(int ii, int jj) 
{
return addmult_result_t{ii + jj, ii * jj};
}
int main()
{
int i = 3, j = 4;
auto result = addmult(i, j);
std::cout << "addition = " << result.addition << "n";
std::cout << "multiplication = " << result.multiplication << "n";
return 0;
}

相关内容

  • 没有找到相关文章

最新更新