我有一个程序,我已经实现了如下的主要功能,最后我得到了一个意想不到的值i.
int main()
{
int fun (int);
int i=3;
fun(i=fun(fun(i)));
printf("%d",i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我的功能实现是
int fun(int i)
{
i++;
return(i);
}
Run Code Online (Sandbox Code Playgroud)
我的输出是:
5
Run Code Online (Sandbox Code Playgroud)
我的期望是:
6
Run Code Online (Sandbox Code Playgroud)
i = fun(i=fun(fun(i)));
Run Code Online (Sandbox Code Playgroud)
这会给你6
fun(i=fun(fun(i)));
Run Code Online (Sandbox Code Playgroud)
这给出了5,因为最后一次调用没有将值赋给i.
同样如下面的Tom所提到的,我通过值而不是引用传递,如果你通过引用传递,那么如果你做了它将是6 fun(fun(fun(&i)));(取决于函数采用/返回的参数类型).