Donde pongo el ++ al incrementar una variable?

Cuando queremos incrementar una variable en algunos lenguajes de programación, podemos utilizar el operador ++ antes y después de la misma para conseguirlo. Pero la situación del operador puede tener desenlaces resultados distintos:

  • Si ponemos el operador antes (++variable) se incrementará el valor antes de retornar el valor de la variable.
  • Si ponemos el operadorr después (variable++) se incrementará el valor después de retornar el valor que tenía la variable, antes de incrementarla.

Lo vemos en éste ejemplo de php:

$a = 1;

// $a es = a 1
echo $a++;

// Devuelve 1, siendo ahora $a igual a 2

echo ++$a;

// Devuelve 3, siendo ahora $a igual a 3

Esto funciona igual en otros lenguajes en los que se pueda usar el operador ++

Sobre Asier

Arquitecto web enganchado al desarrollo, estudio y planteamiento de proyectos en internet. Trabajo en Blackslot, empresa que fundé en el 2009. Me encanta el cine, el café, el sexo, la cultura geek, la cultura oriental y la música electrónica.
Artículo publicado en Desarrollo, Desarrollo Web. Enlace a esta entrada..

2 espuestas a Donde pongo el ++ al incrementar una variable?

  1. Alberto de Tena dijo:

    Mmmmmm, hay algunos casos al utilizar un operador de incremento que no estan definidos en el estandar ANSI y que son interpretados de una u otra forma segun el compilador que uses. Por ejemplo

    #include

    void main()
    {
    int a;
    a=5;
    a=(a++)+(a++);
    printf(“%d\n”,a);
    }

    Codigo simple en C, dependiendo del compilador que tengas te puede dar desde 23, hasta 22 o 21 incluso.

    Lo he probado en un gcc bajo cygwin, bajo AIX y bajo Solaris y me da siempre 12.

    Mira lo que dice el compilador de AIX

    cc: Warning: test.c, line 7: In this statement, the expression “a=(a++)+(a++)” modifies the variable “a” more than once without an intervening sequence point. This behavior is undefined. (undefvarmod)

    En resumen, no suele ser una buena idea usar este operador de formas compuestas, al no estar definido y al ser difícil de leer y de interpretar.

    Te dejo la sorpresa de ver cuanto da en Java un código equivalente.

  2. @alberto en java probé el mismo código que he puesto en el post y me ha funcionado de la misma forma que en php.

    La explicación de mi post está expuesta de una forma similar en la guía de certificación de zend para php5.

    Pero coincido contigo en que no puede ser nada bueno complicar una línea de código en la que se use el operador ++.

    En tu ejemplo me parece una locura tener la línea a=(a++)+(a++); No se si en algún caso sería necesario hacerlo asi, pero yo lo evitaría.

    En fin, tu sabes infinito más que yo de programación, gracias por tu comentario.

    Un saludo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos requeridos, están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Notificarme los nuevos comentarios por correo electrónico. Tambien puedes suscribirte sin comentar.