作者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