Esta es una de las típicas cosas a evitar cuando estás programando. La explicación completa es demasiado larga para ponerla aquí.
La versión abreviada es que estás combinando diferentes tipos de modificaciones sobre una misma variable en una misma instrucción y eso es algo que no suele estar sujeto al estándar.
Dependiendo de las optimizaciones que haga el compilador podría decidir procesar primero la 3ª i, después la 2ª y finalmente la primera, en cuyo caso el resultado sería 13,11,11 pero como has comprobado no tiene por qué ser así.
Explicación a 13,11,11:
Código C:
Ver originalint i=10;
int j = ++i; // j=11, i=11
int k = i++; // k=11, i=12 (es un postincremento)
int l = ++i; // l=13, i=13
Pero vamos, que es algo poco relevante partiendo de la base de que esto
no se debe hacer
Pasa de libros donde expliquen cosas de estas porque seguramente estén ya desfasados.
PD.: Si quieres conseguir este efecto sin saltarte el estándar precalcula los valores y después los imprimes... cada cosa en su propia línea (tal y como aparece en el ejemplo que te he puesto antes). Esa forma te va a funcionar SIEMPRE igual independientemente del compilador que utilices.
Un saludo.