De acordo com tudo que foi dito,me fica ainda pouco claro pq
essa expressao para a=0 temos (a=a++ + a) que é igual a esta outra (a=a++ + a++) como pode?alguém sabe me dizer?pelo que li em uma expressao matematica o operador unário tem preferencia com relacao ao binário,logo deve-se incrementar partir para solucao de cada expressao pós neste caso e depois somar o resultado ,mas nao acontece!!
Isso acontece porque esse ‘a++’ é o que se chama de ‘pós-incremento’. Utilizando o pós-incremento, a variável “a” será incrementada apenas uma linha depois deste operador aparecer. Caso você queira utilizar o operador unário mas quer que ele faça efeito na mesma linha use o pré-incremento: ++a. Teoricamente é a mesma coisa, só que ele executa antes, na linha onde aparece.
EDIT:
Acho que entendi aqui.
O negócio é o seguinte:
O teu problema foi que você está usando a própria variável a para armazenar o resultado. Tente usar uma outra variável para guardá-lo.
F
fabioEM
GiancarloBraga:
Se usar dois unários o resultado vai ser 2. Isso porque você está utilizando dois pós-incrementos na mesma expressão. O mais lógico creio que seja que é porque eles abreviam o efeito um do outro quando aparecem juntos.
São questões complicada mesmo…rs.
Eu fiz um teste aqui.
Tentei somar a++ com b=0 e deu 0, já o ++a + b deu 1. Acho que o que fez a questão ficar complicada é que você está usando apenas o “a”.
A razão para isso tudo então, foi que como você está somando incremento do a com ele mesmo a máquina virtual se sentiu obrigada a incrementar o a antes do que o usual. Então o a++ mais a vai dar 1 porque ele está somando com ele mesmo e como é pós incremento o jvm deixou como 1, agora no caso do ++a mais o a, o resultado dará 2 pois ele incrementa o a(portanto 1) e depois soma com ele mesmo, assim resultando em 2. Será que é isso?
F
fabioEM
GiancarloBraga:
Ei. Hoje é sábado.
Eu fiz um teste aqui.
Tentei somar a++ com b=0 e deu 0, já o ++a + b deu 1. Acho que o que fez a questão ficar complicada é que você está usando apenas o “a”.
A razão para isso tudo então, foi que como você está somando incremento do a com ele mesmo a máquina virtual se sentiu obrigada a incrementar o a antes do que o usual. Então o a++ mais a vai dar 1 porque ele está somando com ele mesmo e como é pós incremento o jvm deixou como 1, agora no caso do ++a mais o a, o resultado dará 2 pois ele incrementa o a(portanto 1) e depois soma com ele mesmo, assim resultando em 2. Será que é isso?
ops… na verdade isso é o que dá quando se fica muito tempo na frente a um computador te respondo no email privado!