Re: [問題] 想請問一個關於"參數傳遞"的問題

作者: yauhh (小y寶貝)   2012-01-01 03:26:38
※ 引述《ofspring (青春無敵)》之銘言:
:  Sub (x,y,z)
: {x = y + z;
: y = z - x}
: main()
: {a=1; b=2; c=3
: call Sub (a, b, a+c);
: print(a, b, c);}
: Q3: 若參數傳遞的方式是 call-by-name,輸出結果為何?
: A3: (6, -2, 3)
我覺得 call by name 字義就是"用參數名字去叫函數執行"
實際作法就是先把函數內對應的變數名字全換過,然後,執行到那一行時才求值.
Sub (a, b, a+c) 第三個參數要看成一個名字,這參數名叫 a+c
Sub (a, b, a+c) = { a = b + a+c; b = a+c - a }
= { a = 2 + 1+3; b = a+c - a }
任何位置出現 a+c, 都應該要找 a=1, c=3. 而單獨存在的 a, 值受前一行程式
影響, 所以
= { a = 6; b = a+c - a }
= { a = 6; b = 1+3 - 6 }

Links booklink

Contact Us: admin [ a t ] ucptt.com