On Friday, February 25, 2011 19:26:14 Steven Schveighoffer wrote: > On Fri, 25 Feb 2011 21:10:59 -0500, Jonathan M Davis <jmdavisp...@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