Foro de elhacker.net

Programación => 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)

Código:
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
  1. k = 5+i++*++j;
  2. k = 5+([{(4)++}*++]4);
  3. k = 5+([{(5}*++]4);
  4. k = 5+([5]4);
  5. k = 5+(20);
  6. k = 25;
jejeje what the fuck!

Si pones estó daria igual.
Código
  1. 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.