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