Cuanto da esta expresion?

Iniciado por nico56, 8 Abril 2010, 20:12 PM

0 Miembros y 1 Visitante están viendo este tema.

nico56

Cuanto queda valiendo k? (Siendo "i" y "j" igual a 4)


int k=5+i++*++j;


El resultado de la expresion en el eclipse me da 25, pero si le saco el postincremento a "i" tambien me da 25 :S .

Shell Root

#1
Código (java) [Seleccionar]

k = 5+i++*++j;
k = 5+([{(4)++}*++]4);
k = 5+([{(5}*++]4);
k = 5+([5]4);
k = 5+(20);
k = 25;

jejeje what the fuck!

Si pones estó daria igual.
Código (java) [Seleccionar]
k = 5+i++*j;
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

nico56

Entonces el preincremento de "j" es inutil?

Shell Root

Emmm pues cuando pones i++, siendo i igual a 4, seria 5, pero a la hora de la multiplicacion, no se antepone de una variable así que supongo que seria ++ eq a 1. Entonces multiplica  [(4)++ * ++], que seria igual a [(4 + 1) * 1].

Eso es lo que pienso yo, no sé si será así, ya que nunca habia visto una expresion como esa... Por cierto, porque la usas?
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

nico56

Bueno gracias por tu respuesta, pero no la uso yo, sino que es de un ejercicio..

kasiko

Nos vemos...


kasiko

i++ es una post-suma, lo que al hacer el calculo se queda como 4
++j es una pre-suma, lo que al hacer el calculo se queda como 5

y despues por orden de calculo va la multiplicacion
4*5=20
20+5=25
k=25

ahora creo q esta mejor explicado.
Nos vemos...