q = ++p++;
это даже не скомпилируется в C или в C ++
Оператор постинкремента имеет более высокий приоритет , чем оператор предварительного инкремента
Так что q= ++p++
интерпретируется как q = ++(p++)
.Теперь оператор постинкрементного выражения возвращает выражение rvalue
, тогда как оператор прединкремента требует, чтобы его операндом был lvalue
.
ISO C99 (Section 6.5.3.1/1)
Constraints
Операнд префиксного оператора увеличения или уменьшения должен иметь квалифицированный или неквалифицированный вещественный или указательный тип и должен быть изменяемым lvalue .