函数返回两个在C中用逗号分隔的东西
好的,这是代码函数返回两个在C中用逗号分隔的东西,c,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;
#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);
}
#包括
int addmult(int,int);
内部主(空)
{
int i=3,j=4,k,l;
k=加法(i,j);
l=addmult(i,j);
printf(“%d%d\n”,k,l);
返回0;
}
int addmult(int ii,int jj)
{
内特kk,ll;
kk=ii+jj;
ll=ii*jj;
返回(kk,ll);
}
在C语言中,一个函数如何同时返回两个东西
编辑:这段代码非常有效。我想知道,它为什么工作?你是在问线路是什么
return(kk,ll);
是否或如何从函数返回多个值
为了回答第一个问题,该代码在功能上等同于:
int ret = (kk,ll);
return ret;
return ll;
这可能会让事情更清楚一点。这是逗号运算符的一个实例,其计算结果为其第二个操作数,因此该代码实际上在功能上也等效于:
int ret = (kk,ll);
return ret;
return ll;
kk值从未使用过
要解决问题的第二种可能解释,请使用结构,例如:
struct product_and_sum
{
int product;
int sum;
};
将函数更改为返回一个
struct product\u和\u sum
,并返回一个适当初始化的结构值。返回一个结构或数组(动态分配)。它不返回两件事,只返回一件事:ll
。您需要了解逗号运算符,但为什么它会这样工作?函数如何一次返回两个值?它不是返回多个值。请注意return语句中的逗号(“,”)运算符,它从左到右求值,并返回最右边的表达式作为结果。因为12号被退回。我得到了这个。:)我还有一个疑问。如果一个函数返回一个值,那么当它返回时是否有必要收集它的值?@user3797829否这是可选的,例如您不通过printf
function!收集返回的值。。。另外了解ret=(kk,ll)之间的差异代码>和ret=kk,ll代码>好吧,如果你能在这里简单介绍一下,有什么区别?另外,对于用户定义的函数来说,不收集值也足够了,对吗?@user3797829:这不是必需的,例如,您有类似foo()的指令代码>。然而,如果您想明确地说结果被丢弃,那么您可以提供void cast,例如(void)foo()代码>。它对编译器没有任何影响,只对一些静态分析工具(如splint
IIRC)有影响。@user3797829:lots和lots函数返回值<例如,code>sprintf
,返回“写入输出字符串的字符数”。问题是:返回值的用途是什么?对于sprintf
,您可以使用返回值或忽略它。不使用sqrt
的返回值会很奇怪。