func(int a,int b){return a+b);}main(){int x=6,y=7,z;z=fun(fun(x++,y++),fun(--x,--y));printf("%d',z);}
2 回答

森林海
TA貢獻2011條經驗 獲得超2個贊
首先你要知道以下幾點規則
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

HUH函數
TA貢獻1836條經驗 獲得超4個贊
結果為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
- 2 回答
- 0 關注
- 172 瀏覽
添加回答
舉報
0/150
提交
取消