es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo incrementar y decrementar con una condición “si”.

Tengo este código:

class Ejemplo {
    public static void main(String args[]) {
        int x = 99;

        if (x++ == x) {
            System.out.println("x++==x : " + x);
        }

        if (++x == x ) {
            System.out.println("++x==x : " + x);
        }

        if (x == x++) {
            System.out.println("x==x++ : " + x);
        }

        if (x == ++x) {
            System.out.println("x==++x : " + x);
        }

        if (++x == ++x) {
            System.out.println("++x==++x : " + x);
        }

        if (x++ == x++) {
            System.out.println("x++==x++ : " + x);
        }

        if (++x == x++) {
            System.out.println("++x==x++ : " + x);
        }           
    }
}

y este es el resultado –>

++x==x : 101
x==x++ : 102
++x==x++ : 109

Quiero entender cómo el compilador de Java maneja este código. Pude entender cómo se llegó a esta parte del resultado:

++x==x : 101
x==x++ : 102

Pero no pude entender esta parte del resultado:

++x==x++ : 109

¿Cómo funciona este código? Y lo más importante, ¿cómo funciona el último resultado?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Este código utiliza varios operadores de incremento previo y posterior para incrementar el valor de la variable x.

    En la declaración if ++x == x++, el operador de incremento previo ++x incrementa el valor de x a 108 y devuelve este valor para ser comparado con el operador de incremento posterior x++. El operador de incremento posterior luego incrementa el valor de x a 109, pero devuelve el valor original (pre-incremento) que era 108. Por lo tanto, la comparación se convierte en 108 == 109, lo cual es falso y esta condición no se ejecuta.

    En la última declaración if ++x == x++, el operador de incremento previo ++x incrementa el valor de x a 110 y devuelve este valor para ser comparado con el operador de incremento posterior x++. El operador de incremento posterior luego incrementa el valor de x a 111, pero devuelve el valor original (pre-incremento) que era 110. Por lo tanto, la comparación se convierte en 110 == 110, lo cual es verdadero y esta condición se ejecuta, imprimiendo la salida ++x==x++ : 109.

    Es importante tener en cuenta que el orden de evaluación de los operadores en Java está predefinido, por lo que el comportamiento de estos operadores es consistente en diferentes compiladores y máquinas.

Comments are closed.