The assignment operator (=
) and the compound assignment
operators all group right-to-left.
require a modifiable lvalue as their left operand; their result is an lvalue
of the type of the left operand, referring to the left operand.
The result in all cases is a bit-field if
the left operand is a bit-field.
In all cases, the assignment is
sequenced after the
value computation of the right and left operands,
and before the
value computation of the assignment expression.
The right operand is sequenced before the left operand.
respect to an indeterminately-sequenced function call, the operation of
a compound assignment is a single evaluation.
Therefore, a function call cannot intervene between the
lvalue-to-rvalue conversion and the side effect associated with any
single compound assignment operator.
— end note