Resultados 1 al 4 de 4

Tema: Duda - Precedencia Operadores Java



  1. #1
    Chapuzillas Junior Avatar de FuRRRaira
    Fecha de ingreso
    13 feb, 19
    Mensajes
    26
    Agradecido: 7

    Question Duda - Precedencia Operadores Java

    ¡Hola! Buenas tardes,
    Estoy empezando con Java y al tratar de realizar una operación concreta me surge una gran incertidumbre respecto a la prioridad de operadores.
    He analizado las siguientes dos operaciones una y otra vez, y según la precedencia de operadores yo creía que obtendría el mismo resultado en ambos casos (1 y 1).

    System.out.println(1 + 2 - 3 * 4 / 5);
    System.out.println(1 + 2 - (3 * (4 / 5)));

    Pero no es así, la segunda operación da como resultado un 3 impreso en la salida. Porfavor, ¿alguien puede decirme por qué ocurre esto?Duda - Precedencia Operadores Java

  2. #2
    Rey de los Chapuzas
    Fecha de ingreso
    22 abr, 15
    Mensajes
    1,208
    Agradecido: 99
    Edito:
    Olvida lo que he dicho, estoy en la parra xd.

  3. #3
    Rey de los Chapuzas
    Fecha de ingreso
    22 abr, 15
    Mensajes
    1,208
    Agradecido: 99
    Al meter las operaciones en paréntesis, la expresión ejecuta primero lo que hay entre paréntesis, por eso:
    Primero hace 4/5 que es 0.8, pero como estás usando enteros, es un 0.
    En el siguiente paso multiplica 3 por el resultado anterior, 3 * 0 es igual a 0.
    Y por último 1 + 3 + 0 que es igual a 3.

    En la primera, al no haber paréntesis, el paso a entero se hace al final, por lo que mantienes el margen de los decimales.

    Además tienes que tener en cuenta el orden de los operadores cuando hay paréntesis.
    Si hay paréntesis se hace primero lo que hay dentro.
    Si no, * y / tienen el mismo orden de preferencia, por lo que se ejecutan de izquierda a derecha.
    Última edición por Sampi; 31/08/2019 a las 17:51 Razón: + info

  4. Los siguientes usuarios han agradecido a Sampi su comentario:


  5. #4
    Chapuzillas Junior Avatar de FuRRRaira
    Fecha de ingreso
    13 feb, 19
    Mensajes
    26
    Agradecido: 7
    Oh, ya veo que lo que hace java y otros lenguajes cuando se utilizan tipos enteros es truncar al valor más bajo el resultado de cada "suboperación" dentro de una misma expresión... menos mal, no tenía ni idea de lo que estaba ocurriendo. Muchas gracias Sampi tu respuesta me ha sido de gran ayuda Duda - Precedencia Operadores Java
    También he comprobado que con valores tipo float las operaciones respetan los decimales, por lo que obtengo el mismo resultado en las dos operaciones Duda - Precedencia Operadores Java

    Todo claro! saludos, y gracias de nuevo Duda - Precedencia Operadores Java

Etiquetas para este tema

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  

Hacemos uso de cookies propias y de terceros para proporcionar una mejor experiencia de usuario. Al seguir navegando entendemos que acepta nuestra Más información .

Aceptar