Operações de ponteiro e precedência do operador em C

fundo

Acabamos de conversar com um cara C hoje e discordamos sobre o seguinte:

int intgA[2] = { 1, 2 };
int intgB[2] = { 3, 5 };

int *intAPtr = intgA;
int *intBPtr = intgB;

Então, quando fazemos:

*intAPtr++ = *intBPtr++;
Minha análise

Primeiro:

intBPtr incrementa em um, agora apontando para o endereço de 5. Em seguida, deferência, mantendo o valor 5;

intAPtr também aumenta em um, agora apontando para o endereço de 2. Referenciando subseqüentemente e o valor é 2;

Por último:

2 é substituído por 5.

Então, respectivamente, são eles: 5 e 5.

A análise dele

O valor de*intBPtr é atribuído primeiro a*intAPtr primeiro.

Portanto, eles se tornam: 3 e 3.

Então ambos*intAPtr e*intBPtr é incrementado em um.

Então, respectivamente eles se tornam: 4 e 4.

Minha Assunção

Eu pensei que o++ operador tem precedência tanto* e=, daí a minha afirmação.

Por exemplo, se tivéssemos:

*intAPtr++; 

O resultado deve ser 2, certo? Porque primeiro incrementamos o ponteiro e depois a desreferencia.

Então, por que, no caso acima, como ele afirma, primeiro atribuímos o valor deintBPtr para o valor deintAPtr e incrementar os valores por último?

Depois de ter recebido todas as sugestões aqui, executei o código no IDE e o resultado confirma o do @sujin:

Embora confirme que eu estava certo, pelo menos em termos de precedência:

Naquela:*intAPtr++ = *intBPtr++;

intAPtr++ tem uma precedência mais alta, o que leva a:intAPtr incrementa seu endereço em 1.

Agora apontando para: o endereço de 2.

E da mesma forma:

intBPtr++ também aumenta em 1 (endereço).

Agora apontando para: o endereço 5.

Então é*é a vez de:

Portanto, os dois são desreferenciados (*) para respectivamente 2 e 5.

Mas o problema ainda existe porque a atribuição acima (=) parece não ter ocorrido.

Se isso acontecesse, ambos seriam 5.

Ansioso para ser mais esclarecido.