c语言入门函数调用问题,这个fun()我知道从右到左,第一步和第二步我知道,就是不懂第三步是怎么算?

最后结果是10,怎么来的呢?不应该是fun(10,9); 结果10+9=19吗?求大神们解答!必采纳,谢谢各位!fun(int a,int b){ return a>b?a+b:++b;}int main(){ int x=3,y=9,z; z=fun(fun(x++,y++),fun(--x,--y)); //先fun(--x,--y) 2>8?2+8:8+1 =9 //再fun(x++,y++) 3>9?3+9:9+1 =10 //最后fun(fun(x++,y++),fun(--x,--y) 是fun(10,9)吗? printf("%d",z); return 0;}

z=fun(fun(x++,y++),fun(--x,--y));
在这个三个fun函数调用的过程中,先执行fun(--x,--y),再执行fun(x++,y++),最后执行外层的fun。
//fun(--x,--y)执行时--x先减再取值,此时实际执行的是fun(2,8),返回9,之后x的值为2,y为8
//fun(x++,y++)执行时先取值再加,此时实际执行的是fun(2,8),返回9,之后x的值为3,y为9
//最后fun(9,9),返回10追问

感谢您,谢谢朋友!我把(--x,--y)看成形参了,原来执行后x,y的值就永久改变了。如果右边的xy都是0,那左边xy都执行++时,是不是右边都是0,左边都是1啊?

温馨提示:答案为网友推荐,仅供参考