函数返回C中用逗号分隔的两个东西

时间:2014-07-12 12:22:41

标签: c

好的,这是代码。

#include <stdio.h>
int addmult (int,int);
int main (void)
{
    int i=3,j=4,k,l;
    k = addmult(i,j);
    l = addmult(i,j);
    printf("%d %d\n",k,l);
    return 0;
}

int addmult ( int ii, int jj )
{
    int kk,ll;
    kk = ii + jj;
    ll = ii*jj;
    return(kk,ll);
}

一个函数如何在C中同时返回两个东西?

编辑:此代码完美无缺。我想知道,为什么会有效?

1 个答案:

答案 0 :(得分:2)

你在问什么行

return(kk,ll);

是否或如何从函数返回多个值?

要回答第一个问题,此代码在功能上等同于:

int ret = (kk,ll);
return ret;

这可能会让它更清晰一些。这是逗号运算符的一个实例,它计算结果为第二个操作数,因此代码实际上也等同于:

return ll;

永远不会使用kk值。

要解决您问题的第二种可能解释:使用结构,例如:

struct product_and_sum
{
  int product;
  int sum;
};

更改函数以返回struct product_and_sum并返回适当初始化的struct值。