В *ptr++
, ++
имеет приоритет над *
, поэтому выражение равно *(ptr++)
. Он принимает значение ptr
, отдельно увеличивает ptr
и использует значение до увеличения с *
. Поскольку до приращения ptr
указывает на 3
, *ptr++
оценивается до 3. Приращение оставляет ptr
, указывая на 27
.
В ++*ptr
, *
должен применяться первым, поэтому выражение ++(*ptr)
. Тогда *ptr
- это то, на что указывает ptr
, то есть 27
, и ++
увеличивает его и выдает значение после приращения. Таким образом, 27
изменяется на 28, а значение выражения составляет 28.