Jérôme M. Berger wrote:
Walter Bright wrote:
Nick Sabalausky wrote:
"Walter Bright" <newshou...@digitalmars.com> 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.

Reply via email to