Ou se você prefere usar o operador “-=” (que só existe em Java por compatibilidade com o C),
x-=y*z;
Cuidado com as operações de ponto-flutuante. Por exemplo, se você fizer o seguinte:
x=1.0/3.0;y=1.0;y=y-x;y=y-x;y=y-x;
O resultado não vai ser zero e sim algo muito pequeno, próximo de zero, mas não zero.
alandiniz
então e o java vai fazer oq com isso x = x - y * z;?
x-y primeiro
ou y*x?
ou eh aleatório?
Rodrigo_Sasaki
alandiniz:
então e o java vai fazer oq com isso x = x - y * z;?
x-y primeiro
ou y*x?
ou eh aleatório?
Aí se aplica a regra de matemática, primeiro multiplicações e divisões, depois somas e subtrações.
E
entanglement
As linguanges em que a precedência das operações aritméticas não se aplica são:
LISP - as operações são todas usando parênteses
FORTH - a notação é a notação polonesa inversa
A sintaxe da APL é tão esquisita que, apesar de ter escrito programas em APL faz quase 30 anos atrás, não me lembro mais se ela obedece ou não aos critérios de precedência - http://en.wikipedia.org/wiki/APL_syntax_and_symbols
Em todas as outras linguagens que eu me lembre, a “multiplicação é mais forte que a adição”, ou seja, ela é executada primeiro.
Ele inicia pelo que está depois do igual. E só depois faz o assignment. Ou seja, ele fará:
resultado = y * z.
x = x - resultado.
Os operadores de atribuição (+=, -=, *=, >>=, |=, etc.) tem a menor precedência possível. Sempre será executado por último. O que também é válido aqui: