Should the comma operator be removed in D2?

Justin Johansson no at spam.com
Mon Nov 16 14:25:03 PST 2009


dsimcha wrote:
>>  >> 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.

When (sub)expressions are separated with the comma operator, each 
(sub)expression is evaluated from left to right in turn (as if the 
individual (sub)expressions where separated by ; (semicolon) statement 
separator.
The result returned by the overall expression is the result returned
by the last (sub)expression (i.e., following the last comma).

In the array example above, int[3,4,5], the dimension expression 3,4,5
evaluates 3 (a constant), then 4 (another constant), and then 5 (yet 
another constant) and returns 5, this being the last subexpression
evaluated.  This is why the array ended up being effectively a
single dimension array of length 5.

Justin



More information about the Digitalmars-d mailing list