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

看板PLT (程式語言與理論)作者 (喲)時間13年前 (2012/01/01 03:26), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/4 (看更多)
※ 引述《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 } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.231.65.21 ※ 編輯: yauhh 來自: 61.231.65.21 (01/01 03:31)
文章代碼(AID): #1E_s7neV (PLT)
文章代碼(AID): #1E_s7neV (PLT)