Es por eso que se llama el "operador de post-incremento". Esencialmente, todo es una expresión que da como resultado un valor. a + 1
es una expresión que da como resultado el valor 124. Si asigna esto a b
con b = a + 1
, b
tiene el valor de 124.Si no asigna el resultado a nada, a + 1
resultará en el valor 124, se descartará inmediatamente ya que no lo está "atrapando" en ninguna parte.
BTW, incluso b = a + 1
es una expresión que devuelve 124. El valor resultante de una expresión de asignación es el valor asignado. Es por eso que c = b = a + 1
funciona como es de esperar.
De todos modos, lo especial de una expresión con ++
y --
es que, además de devolver un valor, el operador ++
modifica la variable directamente. Entonces, ¿qué sucede cuando lo haces b = a++
es, la expresión a++
devuelve el valor 123 e incrementa a
. El incrementador poste devuelve primero el valor, luego incrementos, mientras que los pre incrementador ++a
primeros incrementos, a continuación, devuelve el valor. Si acaba de escribir a++
por sí mismo sin asignación, no notará la diferencia. Así es como generalmente se usa a++
, como short-hand para a = a + 1
.
Esto es bastante estándar.
No hay ninguna diferencia entre Javascript y PHP en el comportamiento del operador de incremento – Asaph
Aunque puede escribir esto en JavaScript, este comportamiento es el mismo que la mayoría (¿alguna?) De estilo C. –
Gracias a todos por su respuesta. Esto debe tener algo que ver con la Programación Orientada a Objetos. Habiendo usado PHP durante tanto tiempo, en la forma de procedimiento, he llegado a esperar que cada vez que una variable esté en el lado izquierdo de cualquier operador, siempre mantendrá su valor anterior, a menos que se haya reasignado directamente. Esta es una forma radicalmente diferente de pensar para mí, y una a la que ahora tendré que acostumbrarme. – Chad