Tema: incremento
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/02/2016, 14:15
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 2 meses
Puntos: 204
Respuesta: incremento

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 original
  1. int i=10;
  2. int j = ++i; // j=11, i=11
  3. int k = i++; // k=11, i=12 (es un postincremento)
  4. int l = ++i; // l=13, i=13
  5. printf("%d%d%d,l,k,j);

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.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.