Saltar al contenido

Java: prefijo / sufijo de los operadores de incremento / decremento?

Solución:

i = 5;
System.out.println(++i); //6

Esto imprime “6” porque toma i, le agrega uno y devuelve el valor: 5 + 1 = 6. Esto es prefijar, agregar al número antes de usarlo en la operación.

i = 6;
System.out.println(i++); //6 (i = 7, prints 6)

Esto imprime “6” porque toma i, almacena una copia, agrega 1 a la variable y luego devuelve la copia. Entonces obtienes el valor que tenía, pero también lo incrementas al mismo tiempo. Por lo tanto, imprime el valor anterior pero se incrementa. La belleza de un incremento de sufijo.

Luego, cuando imprime i, muestra el valor real de i porque se había incrementado: 7.

Sé que esto ha sido respondido, pero pensé que otra explicación podría ser útil.

Otra forma de ilustrarlo es:

++i dará el resultado de la new i, i++ dará el resultado del original i y almacenar el new i para la siguiente acción.

Una forma de pensar en ello es hacer algo más dentro de la expresión. Cuando imprime el valor actual de i, dependerá de si i se ha cambiado dentro de la expresión o después de la expresión.

    int i = 1;
result i = ++i * 2 // result = 4, i = 2

i se evalúa (cambia) antes de que se calcule el resultado. Impresión i para esta expresión, muestra el valor cambiado de i utilizado para esta expresión.

result i = i++ * 2 // result = 2, i = 2

i se evalúa después de que se calcula el resultado. Entonces imprimiendo i de esta expresión da el valor original de i usado en esta expresión, pero i todavía se cambia para otros usos. Entonces imprimiendo el valor de i inmediatamente después de la expresión, mostrará el nuevo valor incrementado de i. Como el valor de i ha cambiado, ya sea impreso o usado.

result i = i++ * 2 // result = 2, i = 2
System.out.println(i); // 2

Si mantuvo un patrón consistente e incluyó líneas de impresión para todos los valores:

  int i = 3; 
System.out.println(i);    //  3
System.out.println(i++);  //  3
System.out.println(i);    // "4"
System.out.println(++i);  //  5          
System.out.println(i);    // "5"
System.out.println(++i);  // "6"
System.out.println(i++);  // "6"
System.out.println(i);    // "7"

Pensar en ++i y i++ como SIMILAR a i = i+1. Pero no es lo mismo. La diferencia es cuando i obtiene el nuevo incremento.

en ++i , el incremento ocurre inmediatamente.

pero si i++ ¿Se producirá un incremento cuando el programa pase a la siguiente línea?

Mira el código aquí.

int i = 0;
while(i < 10){
   System.out.println(i);
   i = increment(i);
}

private int increment(i){
   return i++;
}

Esto resultará en un bucle sin fin. porque i se devolverá con el valor original y después del punto y coma se incrementará, pero el valor devuelto no ha sido. Por lo tanto i nunca se devolverá realmente como un valor incrementado.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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