函数调用中的意外输出

tea*_*her 0 c c++

我有一个程序,我已经实现了如下的主要功能,最后我得到了一个意想不到的值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)

Jes*_*mos 5

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)));(取决于函数采用/返回的参数类型).