Lutger Wrote: > dsimcha wrote: > > > == Quote from Justin Johansson (n...@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.