Происходит ли ++ после назначения?
Нет.Приращение p
, вероятно, происходит до того, как происходит присвоение, но это не очень важно здесь.
Важная часть заключается в том, что присвоение видит только то значение, которое p
имело до увеличения p
.p++
возвращает не больше p
, чем !x
возвращает x
.
p++
возвращает исходное значение p
по тем же строкам, что и
TYPE* post_inc(TYPE* p) {
TYPE* tmp = p;
++p;
return tmp;
}
Всевместе это выглядит примерно так:
tmp = *left;
anon0 = left;
++left;
*anon0 = *right;
anon1 = right;
--right;
*anon1 = tmp;
(Фактический порядок может отличаться.)