作者yauhh (哟)
看板PLT
标题Re: [问题] 想请问一个关於"参数传递"的问题
时间Sun Jan 1 03:26:38 2012
※ 引述《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)