order of evaluation parse date s - (nf)
utzoo!decvax!harpo!npoiv!hou5f!ariel!houti!hogpc!houxz!ihnp4!ixn5c!inuxc!pur-ee!uiucdcs!uicsl!preece
utzoo!decvax!harpo!npoiv!hou5f!ariel!houti!hogpc!houxz!ihnp4!ixn5c!inuxc!pur-ee!uiucdcs!uicsl!preece
Fri Mar 11 16:57:13 AEST 1983
#R:houxj:-22000:uicsl:6400004:000:1052
uicsl!preece Mar 11 08:28:00 1983
***** uicsl:net.lang.c / alice!e / 3:46 pm Mar 3, 1983
i = 4;
i = i++;
Regardless of whether the increment of the assignment comes first,
i == 5 afterwards. Think:
If the increment comes first:
i++ (so i == 5)
i = i (so i == 5)
If the assignment comes first:
i = i (so i == 4)
i++ (so i == 5)
---------
Think again:
Stack old value of i
Store incremented value in i
Pop stacked (old) value into i (so i == 4)
This is a perfectly reasonable interpretation, given that the whole
line (i = i++) is one expression, and therefore re-arrangeable.
In fact, many would say it's the RIGHT way, since it means the
result of 'a = i++' and 'i = i++' are the same.
Clearly K+R says they're all right methods, and the author should
avoid ambiguous expressions.
[I agree with most of you out there that this topic has had
enough attention, but i also think it's worthwhile to keep
addressing mis-interpretations in the hopes of as many readers
as possible understanding the problem and avoiding such usage.]
scott e preece
uiuc coordinated science lab
More information about the Comp.lang.c
mailing list