Please note, that this has nothing to do with Operator Precedence.. () and ++ , Undefined behavior and sequence points , Why are these constructs (using ++) undefined behavior? and the hundreds similar questions about this here
Shortly: is the Associativity guaranteed by the standard?
Detailed example: from Wikipedia's article for operator precedence, operator*
and operator/
have the same priority and they are Left-to-right
operators. Does this mean, that the standard guarantees, that this:
int res = x / y * z / t;
will be evaluated as
int res = ( ( x / y ) * z ) / t;
or it's implementation defined?
If it's guaranteed, could you quote?
It's just out of curiosity, I always write brackets in these cases.
Ready to delete the question, if there's such one.
From the latest publicly available draft
5.6 Multiplicative operators [expr.mul]
1 The multiplicative operators *, /, and % group left-to-right.
multiplicative-expression: pm-expression multiplicative-expression * pm-expression multiplicative-expression / pm-expression multiplicative-expression % pm-expression
So parsing will go like:
int res = x / y * z / t;
int res = (x / y * z) / t;
int res = ((x / y) * z) / t;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With