Jérôme M. Berger wrote:
Walter Bright wrote:
Nick Sabalausky wrote:
"Walter Bright" <[email protected]> wrote in message
It's handy when you want to prefix one expression to another, as in:
(foo(), x + 3)
I guess I'm not familiar with that syntax. What does that do and for
what purpose?
They're called Comma Expressions, and the left operand is evaluated
first, its result discarded, then the right operand is evaluated and
forms the type and result of the Comma Expression.
I've always felt they were useless and confusing. What's the
advantage of "y = (foo(), x + 3);" over "foo(); y = x+3;"?
When you only see the x+3 because you're recursively walking the tree
generating code.
It's handy for things like rewriting ++e so it can be used more than
once but is only evaluated once:
(tmp = ++e, tmp)
Uh? How is that different from "++e"
You can then use tmp more than once with only one increment of e.