Esse é o resultado típico do comportamento indefinido ou dependente da implementação. Quando sua expressão está alterando uma variável em ambos os sites da equação (entre muitas outras situações), você está basicamente fazendo errado. Só porque "funciona" com um lançamento de compilador não significa que ele dará a mesma resposta no próximo lançamento. Leia atentamente a especificação da linguagem para ver que tipo de coisas são indefinidas ou dependentes da implementação e evite-as. Nenhuma resposta é "correta", elas são indefinidas. Respostas diferentes podem até ser desencadeadas por diferentes otimizações do mesmo compilador.
Na prática, você deve usar seus sinalizadores de aviso do compilador e uma ferramenta de análise estática como valgrind ou Purify para sinalizar esse tipo de coisa. E até você entender o significado de termos como "Lvalue" e "Rvalue", apenas usar uma tabela de precedência do operador não é realmente suficiente para entender o que está acontecendo com alguns dos operadores de aumento / redução de pre / post.