首先你要知道以下几点规则
1.x++表示这次运算还是采取原来的x值,运算结束后将x+1
2.--x表示本次计算x就采用原来的值-1进行计算
3.函数处理顺序为自右向左;
下面开始分析z=fun(fun(x++,y++),fun(--x,--y))
(1)根据规则3先计算fun(--x,--y),根据规则2,此时采取x=6-1,y=7-1带入计算得到
fun(--x,--y)=11;此时x=5,y=6
(2)根据规则3再计算fun(x++,y++),根据规则1,此时采取x=5,y=6带入计算得到fun(x++,y++)=11,运算结束后再根据规则1继续计算x=5+1,y=6+1;此时x=6,y=7
(3)有了fun(--x,--y)和fun(x++,y++)的值,第三部就是他俩相加为11,此时x=6,y=7
结果为22
func(int a,int b) {
return a+b;
}
main() {
int x=6,y=7,z;
z=func(func(x++,y++),func(--x,--y));
printf("%d",z);
}
由于编译的某些规则,x=5,y=6
func的返回值为11
最终结果为22