#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
函数最终只会返回该值。
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;
}