G'day Matt,
>>>>> "MW" == Matt Calder <calder@stat.colostate.edu> writes:
MW> S-news, I came across this today and was surprised by the
MW> result. Perhaps someone could explain this in terms of order of
MW> operations.
MW> After: a <- 0
MW> a <- (a <- a + 1) + (a <- a + 1)
MW> The value of a is 4. I expected 3.
Well, I cannot explain it in terms of order of operations. My guess
is, that this sequence of instruction eventually boils down to the
execution of the following instructions:
1) fetch `a', add 1 to it and store it in `a' [first a<-a+1, now a=1]
2) fetch `a', add 1 to it and store it in `a' [second a<-a+1, now a=2]
3) to form the addition, we need the result of the code inside the two
()'s, but that is stored in `a' [first ()] and `a' [second ()]. Hence,
fetch `a' and `a', add these two numbers and store the result in `a'.
Result: a=4.
It seems to be the S+ equivalent to i=i++ in C. You are probably
lucky that S+ didn't reformat your disk :)
Best wishes,
Berwin
=============================== Full address ================================
Berwin A Turlach
Centre for Mathematics and its Applications Tel.: +61 (2) 6249 0706 (Secr.)
Statistical Science Program +61 (2) 6249 0731 (direct)
The Australian National University FAX : +61 (2) 6249 5549
Canberra ACT 0200 e-mail: berwin.turlach@anu.edu.au
Australia http://wwwmaths.anu.edu.au/~berwin
-----------------------------------------------------------------------
This message was distributed by s-news@wubios.wustl.edu. To unsubscribe
send e-mail to s-news-request@wubios.wustl.edu with the BODY of the
message: unsubscribe s-news
|