【发布时间】:2015-08-04 13:36:26
【问题描述】:
我试图了解 C 函数中的值传递和返回是如何发生的。我发现一段代码如下:
#include <stdio.h>
int fun(int ii, int jj)
{
int kk, ll;
kk = ii + jj;
ll = ii * jj;
return (kk,ll);
}
int main()
{
int i=4, j=5, k, l;
k = fun(i, j);
l = fun(i, j);
printf("%d %d\n", k, l);
return 0;
}
现在,当我尝试通过 fun() 返回 2 个值时,显然我没有收到任何错误。
此外,fun() 返回的值是 ll,即 20 (=4*5) 而不是 kk。此外,如果我将return 语句重写为:
return (ll,kk);
返回的值是kk 的值,即。 9 (=4+5)。
查询:为什么会这样?
【问题讨论】:
-
出于兴趣,您预计会发生什么?
-
@Useless 也许是编译器错误。引用 OP “现在显然我没有收到任何错误”:-)
-
其实是的。各种错误消息。就像试图通过返回超过 1 个值等。