請問call by value result

作者: cat99961 (阿湯)   2017-01-24 11:55:42
有一個題目如下:
採取pass by value result參數傳遞的方法,請回答下面程式執行的結果:
int y=1,x=1;
int fun(ant a,int b){b+=a; a=b+x; return a;}
int main()
{ int x=2;
y=fun(x,y)+y;
printf("x=%d,y=%d",x,y);
}
我的解題過程如下
實際參數 形式參數
global main fun
x y x a b
1 1
2
數值:2 數值:1
運算式:b+=a
->b=3
運算式:a=b+x
->a=3+globalx
->a=3+1=4
(將a值繫結到main的x) (將b值繫結到
global的y)
(回傳a值4)
3 4
運算式:y=fun(x,y)+y;
->y=4+3=7
因此我的答案是x=4,y=7;但解答是x=4,y=5
不知我的解題過程哪裡有錯呢?
麻煩各位大大,謝謝了.....
作者: LPH66 (-6.2598534e+18f)   2017-01-24 12:09:00
這應該不是 call by value result 的問題而是 fun(x,y)+y 後面那個 y 的值何時取得的問題如果是呼叫完才取得值那是你的 y=7如果是呼叫前就取得值的話就是解答的 y=5因為標準 C/C++ 沒有這種呼叫法所以很難猜測出題者怎麼想
作者: ggg12345 (ggg)   2017-01-24 17:44:00
fun(x,y){...return a}+y --> fun=a +y --> 4+1
作者: jerry771210 (說在多也沒用)   2017-04-03 23:21:00
掛debugger印一下變數就知道了
作者: pakls (爬克斯)   2017-04-12 18:46:00
跑一次就知道結果:x=2, y=5

Links booklink

Contact Us: admin [ a t ] ucptt.com