On 4 Jun 2007 at 1:27, der Mouse wrote:
This places it in "undefined behaviour"
territory; the result may be
anything whatsoever that the compiler is capable of arranging for.
Just so--and this is one of dmr's original "what does it do?"
examples from over 20 years ago. The "correct" answer is that "it's
not possible to say without implementation-specific information."
What's always rankled my sense of the Way Things Ought To Be is that
the statement isn't syntactically illegal. It's just impossible to
say for certain what it does.
FWIW, both MS 32-bit and 16-bit C generates f(4,4,4). Change the
prefix ++ to a postfix ++ and the two diverge: MS 32-bit generates
f(1,1,1), but 16-bit generates f(3,2,1).
Cheers,
Chuck