func(int a,int b) {return a+b);} main() {int x=6,y=7,z; z=fun(fun(x++,y++),fun(--x,--y)); printf

2024-12-05 00:43:55
推荐回答(2个)
回答(1):

首先你要知道以下几点规则
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

回答(2):

结果为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