Multiple assignment
Jonathan M Davis
jmdavisProg at gmx.com
Fri Feb 25 19:56:46 PST 2011
On Friday, February 25, 2011 19:26:14 Steven Schveighoffer wrote:
> On Fri, 25 Feb 2011 21:10:59 -0500, Jonathan M Davis <jmdavisProg at gmx.com>
>
> wrote:
> > On Friday, February 25, 2011 17:31:36 Ali Çehreli wrote:
> >> On 02/25/2011 05:09 PM, bearophile wrote:
> >> > int j;
> >> > int[2] y;
> >> > y[j] = j = 1;
> >>
> >> I think that's undefined behavior in C and C++. It is not defined
> >> whether j's previous or past value is used in y[j].
> >>
> >> I would expect the situation be the same in D.
> >
> > No, that should be perfectly defined. What's undefined is when you do
> > something
> > like func(j, y[j]). The evaluation order of the function arguments is
> > undefined.
> > However, the evaluation order when dealing with an assignment should be
> > defined.
> > I _could_ be wrong about that, but there's no question that the
> > assignments
> > themselves are guaranteed to be done in right-to-left order.
>
> Let me fix that for you:
>
> func(j++, y[j])
LOL. Yes. I forgot to alter j in the expression. Good catch.
- Jonathan M Davis
More information about the Digitalmars-d-learn
mailing list