История изменений
Исправление xaizek, (текущая версия) :
Эта строка:
return *p-- += *q--;
int *const tmp_p = p;
int *const tmp_q = q;
p -= 1;
q -= 1;
return *tmp_p += *tmp_q;
*q--
разбирается именно как *(q--)
, но q как бы «раздваивается» в выражении. Значение указанной переменной меняется, но в выражении используется прошлое значение. В этом вся суть пост-операций. Менять локальные переменные тут толку нет.Исходная версия xaizek, :
Эта строка:
return *p-- += *q--;
int *const tmp_p = p;
int *const tmp_q = q;
p -= 1;
q -= 1
return *tmp_p += *tmp_q;
*q--
разбирается именно как *(q--)
, но q как бы «раздваивается» в выражении. Значение указанной переменной меняется, но в выражении используется прошлое значение. В этом вся суть пост-операций. Менять локальные переменные тут толку нет.