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