Look at it this way
q=p++;
q=q + p++;
so the first time when p is encountered in this expression is treated as 1, the next ++ increments p by 1 so p becomes two. the second operand p is now treated as 2 so (1+2) becomes three. Now after that ++ is encountered which makes p=3. So this is why p becomes three and q becomes three