6.5.16.2 Compound assignment
Constraints
For the operators += and -= only, either the left operand shall be a pointer to an object type and the right shall have integer type, or the left operand shall have qualified or unqualified arithmetic type and the right shall have arithmetic type.
For the other operators, each operand shall have arithmetic type consistent with those allowed by the corresponding binary operator.
Semantics
A compound assignment of the form E1 op = E2 differs from the simple assignment expression E1 = E1 op (E2) only in that the lvalue E1 is evaluated only once.