[D1][expressions] Order Of Evaluation

%u e at ee.com
Fri Oct 8 10:03:20 PDT 2010


== Quote from Denis Koroskin (2korden at gmail.com)'s article
> On Fri, 08 Oct 2010 18:49:36 +0400, %u <e at ee.com> wrote:
> > /The following binary expressions are evaluated in an
> > implementation-defined
> > order:
> > AssignExpression/../AddExpression/
> >
> > /It is an error to depend on order of evaluation when it is not
> > specified./
> >
> > That makes this an error!?
> >
> > y = x + 1;
> >
> > Am I being paranoid or should I be adding more brackets?
> Assignment has higher precedence that addition so your code has no errors.
You probably mean that the other way around ;)

But you are right, I am confusing precedence and associativity.
The expressions page reads like there are only two levels of precedence, but it
only says anyting about the associativity.
A quick search on precedence shows that the C precedence rules apply.

> However, the following one does:
> int x = 1;
> int y = (x = 2) + x;
> because "x" and "x = 2" has same precedence and thus may be evaluated in
> any order.
> Stay away from such code and you should be fine.

I never assign within assignments :)


More information about the Digitalmars-d-learn mailing list