作者gensim (...)
看板Grad-ProbAsk
標題[問題] 資結
時間Thu Apr 9 23:57:20 2009
procedure p(a,b,c)
begin
b=b+2;
c=c*a;
end
program main (in, out)
begin
m:=3;
n:=4;
p(m+n,m,m);
print(m);
end
請問使用call-by name算出來的值是29還是45啊?
是先做乘法還是加法啊?? 有人知道嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.172.245.151
1F:→ sunneo:m = m + 2 (m已經被修改為5) m = m * (m+n) == 45 04/10 00:00
2F:→ sunneo:call by name 的規則是,當前面的敘述有修改到值 04/10 00:01
3F:→ sunneo:則後面的敘述必須yield直到前面的敘述完成 04/10 00:01
4F:→ gensim:我想問的是 c=c*a是被換成m=m*(m+n)=45 04/10 01:25
5F:→ gensim:還是m=m*m+n=29 ? 04/10 01:25
6F:→ thinphon:45! 04/10 10:50