sirve responsebody que para outputlink mobs java

java - responsebody - La diferencia entre+= y=+



minecraft wiki mobs (8)

He perdido + = con = + una a muchas veces, y creo que sigo olvidando porque no sé la diferencia entre estas dos, solo que una me da el valor que espero y la otra no.

¿Por qué es esto?


Algunas perspectivas históricas: Java heredó el += y operadores similares de C. En versiones muy tempranas de C (mediados de los años 70), los operadores de asignación compuesta tenían el "=" a la izquierda, por lo que

x =- 3;

era equivalente a

x = x - 3;

(excepto que x solo se evalúa una vez).

Esto causó confusión, porque

x=-1;

disminuiría x en lugar de asignarle el valor -1, por lo que se cambió la sintaxis (evitando el horror de tener que rodear a los operadores con espacios en blanco: x = -1; ).

(Utilicé -= y =- en los ejemplos porque Early C no tenía el operador unario + ).

Afortunadamente, Java se inventó mucho después de que C cambiara a la sintaxis actual, por lo que nunca tuvo este problema en particular.


Es simple. X + = 1 es x = x + 1 mientras que x = + 1 hará que x tenga el valor de uno (positivo)


Porque =+ no es un operador de Java.


+= -> Añadir el lado derecho a la izquierda

=+ -> No uses esto. Establecer el lado izquierdo a la derecha.


+= es un operador de asignación compuesto: agrega el operando RHS al valor existente del operando LHS.

=+ es solo el operador de asignación seguido por el operador unario +. Establece el valor del operando LHS al valor del operando RHS:

int x = 10; x += 10; // x = x + 10; i.e. x = 20 x =+ 5; // Equivalent to x = +5, so x = 5.


a += b es igual a = a + b . a =+ b es igual a = (+b) .


a += b es una mano corta para a = a + b (aunque tenga en cuenta que la expresión a solo se evaluará una vez).

a =+ b es a = (+b) , es decir, asignando el unario + de b a a .

Ejemplos:

int a = 15; int b = -5; a += b; // a is now 10 a =+ b; // a is now -5


x += y

es lo mismo que

x = x + y

y

x =+ y

está mal pero podría ser interpretado como

x = 0 + y