Should the comma operator be removed in D2?

Jason House jason.james.house at gmail.com
Mon Nov 16 15:47:48 PST 2009


Lutger Wrote:

> dsimcha wrote:
> 
> > == Quote from Justin Johansson (no at spam.com)'s article
> >> Mentioned in the switch case statements thread, this probably should be
> >> a separate discussion thread.
> >> Is the comma operator "another piece of C cruft" that needs to be
> >> removed from D(2)?
> >> grauzone wrote:
> >>  > Justin Johansson wrote:
> >>  >> bearophile wrote:
> >>  >>> What's bad about forcing people to write:
> >>  >>> case A, B, C:
> >>  >>>
> >>  >>> Instead of:
> >>  >>> case A:
> >>  >>> case B:
> >>  >>> case C:
> >>  >>> ?
> >>  >>>
> >>  >>> Bye,
> >>  >>> bearophile
> >>  >>
> >>  >> I don't know about "forcing people" to write such but perhaps it
> >>  >> could be an "option for people" :-)
> >>  >>
> >>  >> Actually I quite like the brevity you propose but would it be a
> >>  >> challenge for the comma operator?
> >>  >>
> >>  >> While ago, I got D multi-dimensional array syntax messed up and
> >>  >> declared such an animal as
> >>  >> int[3,4,5] which effectively ended up declaring the beast as int[5].
> >>  >
> >>  > The comma operator is another piece of C cruft that needs to go.
> >>  >
> >>  >> Cheers Justin
> > 
> > Can someone please explain to me what the comma operator does?  I've seen
> > this
> > mentioned here before, but I really don't know.  Then again, if the only
> > people who use it are crufty old C language lawyers and people who have
> > never programmed seriously in C before don't know about it, I guess that's
> > an indicator that it's not worth much.
> 
> It is very simple, evaluates the expression before the comma and after the 
> comma. The result is the value of the expression after the comma.
> 
> int a = 1;
> int b = --a, ++a;
> assert(b == 1);
> assert(a == 1);

I'm no language lawyer, but I'm pretty sure that's not right. I don't think there's an order of evaluation rules. b could just as easilly end up with a value of 2.



More information about the Digitalmars-d mailing list