operador

Si alguna vez habéis programado en un lenguaje de programación con sintaxis heredada de C: el mismo C, C++, Java, C#… seguro que habéis utilizado el operador postincremento, sobre todo en iteraciones for, el famoso: i++ (o equivalente). Lo que es menos frecuente es haber utilizado el operador ++i, pero si lo habéis utilizado seguro que lo habéis hecho para algo similar al anterior. La diferencia entre ambos es algo que un día me inquietó y que hoy os voy a comentar.

La diferencia es la precedencia del operador, es decir, qué operador realiza su acción antes. Esta diferencia no importa cuando la única operación de una sentencia es i++ o ++i, es decir:

i++;
++i;

Típica situación del caso de las iteraciones for, es lo mismo. Sin embargo, cuando hay otra operación de por medio, las cosas cambian. Veamos:

i = 0;
v = i++;

La variable v contendrá 0 e i contendrá 1. Primero se ha asignado el valor de i a v y posteriormente se ha incrementado i. Si utilizamos el otro operador, que tiene más precedencia, se ejecutará antes el incremento de i y posteriormente se asignará su nuevo valor, 1, a la variable v.

i = 0;
v = ++i;

En este caso ambas variables, v e i, contienen 1.

La diferencia funcional, como podéis ver, existe y es conveniente conocerla, para poder utilizarla, explotarla y de paso, conocer algo más sobre los lenguajes de este tipo.

Aparte existe otra diferencia, ésta de carácter computacional y que es conveniente conocerla de cara a hacer más eficiente nuestro código. ++i realiza dos instrucciones, incrementar y retornar; mientras que i++, por lo que acabamos de comentar lleva a cabo tres: guardar el estado actual, incrementar, retornar el estado anterior.


¿Te ha gustado?:
  • Digg
  • del.icio.us
  • Facebook
  • BarraPunto
  • Bitacoras.com
  • LinkedIn
  • Meneame
  • PDF
  • Technorati
  • Twitter

8 Comentarios a “¿Cuál es la diferencia entre i++ y ++i?”

  1. [...] ¿Cuál es la diferencia entre i++ y ++i? [...]

  2. rv dice:

    ¡oh! Has descubierto el operador de PREincremento…

  3. Muy bueno el post, es tan elemental que mucha gente debe haber estado confundida :)

    Salduos!

  4. javier parra dice:

    no conocia el operador ++i

    tenia entendido que el i++ era igual que i=i+1 pero veo que no

    gracias por este post

    salu2

    P.D añadidle una s a mientra (para que ponga mientras)

  5. Nacho López dice:

    Excelente artículo Carazo.

  6. carazo dice:

    @Nacho López, @javier parra, @Ernesto Carrión: Gracias a todos, en ocasiones, lo más básico se desconoce y es importante recordarlo.

    @javier parra: Ya está corregido :)

  7. PasabaPorAqui dice:

    Muy buena, la verdad es que el operador ++i es algo que había olvidado, de cuando dí C, y del que desconocía la diferencía de pasos que conlleva cada orden. Por poco que sea lo que se ahorra siempre viene bien.

    Gracias por el artículo.

  8. Información Bitacoras.com…

    Valora en Bitacoras.com: Si alguna vez habéis programado en un lenguaje de programación con sintaxis heredada de C: el mismo C, C , Java, C#… seguro que habéis utilizado el operador postincremento, sobre todo en iteraciones for, el famoso: i (o equiv…..

Deja un comentario