作者castin (调整自己)
看板TransCSI
标题[请益] 程式语言~~传值
时间Tue Jul 14 21:41:29 2009
想问一题程式题,下列程式分别采用「call by value」、「call by address」
、「call by name」之A、B值各为多少?
PROGRAM PROG (OUTPUR);
VAR A,B:INTEGER;
PROCEDURE SUB (A,B,C)
BEGIN
A = B - C;
B = A + B;
END
BEGIN
A = 3;
B = 5;
SUB (A*B,B,A);
WRITE(A,B);
END
疑惑点:A,B为全域会如何影响结果?
call by name的传值过程是?
谢谢高手!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.118.162.28
※ 编辑: castin 来自: 122.118.162.28 (07/14 21:41)
1F:推 future1234:call by name有个步骤会碰到 A*B=B-A; 07/15 22:19
2F:→ future1234:我不知道这在Pascal合不合法说@@ 07/15 22:19
3F:→ future1234:虽然 call by name 要道run-time才会决定结果 07/15 22:20
4F:→ iwindflyer:pascal的程式码不会考,可以换C板的,观念则没差 09/15 14:15
5F:推 arthur104:答案是A=2,B=20吗??? 07/24 10:58