返回a,b会做什么,为什么?

腐殖质

当我们在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(如intdouble等),因此,不可能从函数中返回多个值。但是,您可以使用包装器类型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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章