看板 Grad-ProbAsk 關於我們 聯絡資訊
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
sunneo:m = m + 2 (m已經被修改為5) m = m * (m+n) == 45 04/10 00:00
sunneo:call by name 的規則是,當前面的敘述有修改到值 04/10 00:01
sunneo:則後面的敘述必須yield直到前面的敘述完成 04/10 00:01
gensim:我想問的是 c=c*a是被換成m=m*(m+n)=45 04/10 01:25
gensim:還是m=m*m+n=29 ? 04/10 01:25
thinphon:45! 04/10 10:50