Я не уверен, что инструкция ниже хорошо определена стандартом C или нет
*p1++ += 2;
или другое подобное утверждение:
*E1++ <operator>= E2
Из стандартного C о пост-приращении:
Результатом оператора postfix ++ является значение операнда. После того, как результат будет получен, значение операнда будет увеличено. (То есть к нему добавляется значение 1 соответствующего типа.) См. обсуждение аддитивных операторов и составное назначение для информацию об ограничениях, типах и преобразованиях и операции над указателями. Побочный эффект обновления сохраненного значения Операнда происходит между предыдущей и следующей последовательностью точка.
И о присвоении coumpund:
Составное присвоение формы E1 op = E2 отличается от простого выражение E1 = E1 op (E2) только в том смысле, что lvalue E1 является оценивается только один раз.