Это недопустимый код C ++.
Заявление
a++ = b;
не законно. Интуитивно понятно, что вы можете поместить что-то в левую часть выражения присваивания, только если оно представляет объект , а не значение . Например, мы не можем написать
x + y = z;
потому что x + y
это значение, а не объект. Тот же принцип действует в вашем коде: выражение a++
не является чем-то, что может быть записано, поскольку оно означает «изменить a
, добавив к нему единицу, а затем получить значение, которое раньше имело a
». «
В комментариях к вашему вопросу говорится о формальных терминах, которые используются для описания того, что я здесь называю «ценностями» и «что-то может быть записано». Они формально называются lvalues , rvalues , prvalues и т. Д., И, возможно, стоит изучить их, чтобы узнать больше о том, какие виды утверждений присваивания являются законными .