int addmult(int ii, int jj){
int kk, ll;
kk = ii + jj;
ll = ii * jj;
return (kk, ll);
}
void main(void){
int i=3, j=4, k, l;
k = addmult(i, j);
l = addmult(i, j);
printf("%d, %d\n", k, l);
}
我认为从函数中返回两个变量是不可能的。编译器如何知道打印ll
而不是kk
?我知道在函数ii=3
和jj=4
,k=7
和l=12
中,但它会继续返回两个变量。有人可以详细说明它最终打印的原因:
12, 12
答案 0 :(得分:1)
该函数没有返回两个值,您偶然发现了Comma operator。
/**
* Assigns value of b into i.
* Results: a=1, b=2, c=3, i=2
*/
int a=1, b=2, c=3;
int i = (a, b);
该函数只返回ll
的值,您想使用引用参数返回两个值。
void addmult(int ii, int jj, int* kk,int* ll){
*kk = ii + jj;
*ll = ii * jj;
}
void main(void){
int i=3, j=4, k, l;
addmult(i, j, &k, &l);
printf("%d, %d\n", k, l);
}