Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: nico56 en 8 Abril 2010, 20:12 PM

Título: Cuanto da esta expresion?
Publicado por: nico56 en 8 Abril 2010, 20:12 PM
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 .
Título: Re: Cuanto da esta expresion?
Publicado por: Shell Root en 8 Abril 2010, 20:35 PM
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;
Título: Re: Cuanto da esta expresion?
Publicado por: nico56 en 8 Abril 2010, 21:02 PM
Entonces el preincremento de "j" es inutil?
Título: Re: Cuanto da esta expresion?
Publicado por: Shell Root en 8 Abril 2010, 21:25 PM
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?
Título: Re: Cuanto da esta expresion?
Publicado por: nico56 en 8 Abril 2010, 21:39 PM
Bueno gracias por tu respuesta, pero no la uso yo, sino que es de un ejercicio..
Título: Re: Cuanto da esta expresion?
Publicado por: kasiko en 9 Abril 2010, 00:27 AM
respuesta:

k=25
Título: Re: Cuanto da esta expresion?
Publicado por: kasiko en 9 Abril 2010, 00:31 AM
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.