当我们在c ++中使用“ return 4,5”时,它不会给出错误,而是返回5(至少4是可以理解的,因为它应该返回遇到的第一个数字)。为什么会发生这种情况,我们可以用它以任何方式返回2个值吗?
这是我尝试过的代码
#include<iostream>
using namespace std;
int something()
{
return 4,5;
}
int main()
{
int a=0,b=0;
a,b = something();
cout<<a<<b<<endl;
}
同样在上面的代码中由于某种原因5被分配给b而不是a
这是逗号运算符的工作方式-它评估所有操作数并返回最后一个。
不幸的是,C ++没有内置类型tuple
(如int
,double
等),因此,不可能从函数中返回多个值。但是,您可以使用包装器类型std::tuple
,然后使用以下std::tie
功能将其解压缩:
#include <iostream>
#include <tuple>
std::tuple<int, int> something()
{
return {1, 2};
}
int main()
{
int a=0, b=0;
std::tie(a, b) = something();
std::cout << a << b << std::endl;
}
但是,这对于两个变量来说有点开销。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句