[quote=RafaelVS][quote=fabioEM]
Bom a meu ver vc acabou sendo um pouco arrogante sim.Mas tudo bem,nao é um pecado capital… me explique antao o do pq deste bizarro acontecimento:
2 expressoes matemáticas escritas de forma diferente mas com o mesmo operador unário Pós incremento em ambas , valores inicias para os tipo primitivo iguais
int b,a =1;
b=1;
a = a + a++; //resultado 2
b = b++ + b; //resultado 3
System.out.println(a+"-"+b);
opss…lascou nao é???
[/quote]
Cara, esse não é o primeiro tópico onde vejo você criticando o pessoal que está apenas tentando te ajudar. Acretido que o mdea foi humilde demais, inclusive, no comentário que ele fez pq essa sua dúvida é coisa muito básica.
Bote na sua cabeça que Java não é C. Se as coisas estão acontecendo, então há alguma explicação para tal (pelo menos em 99,99% dos casos… e esse é um deles).
Com o pouco conhecimento que vc tem em Java, você não vai conseguir achar um “furo” assim tão facilmente.
Dito isso, responderei (pela última vez) à sua pergunta (ou qualquer outro comentário que vc venha a fazer aqui e em outros tópicos):
Quando avaliamos uma expressão que contém vários operadores, primeiramente são avaliados os operandos e em seguida os valores de cada operador individualmente (seguindo uma ordem definida pela linguagem).
Em Java, um dos operadores de maior precedênca é o unário. Assim sendo, ele tem prioridade ao operador binario de soma.
int b, a = 1;
b = 1;
a = a + a++; //linha1: resultado 2
b = b++ + b; //linha2: resultado 3
System.out.println(a+"-"+b);
Nesse código, o que está acontecendo?
Imagine que as linhas 1 e 2 tenham o seguinte formato:
X = Y + Z
Para eu saber o resultado dessa operação, preciso avaliar os valores de Y e de Z.
Na linha1, temos que Y é a (que vai ser 1) e Z é a++(que vai retornar 1 e incrementar o valor de a). Então, temos:
X = Y + Z => X = a + a++ => X = 1 + 1 => X = 2 (por sinal, X é a, então: a = 2)
Na linha2, temos que Y é b++ (que retorna 1 e JÁ INCREMENTA O VALOR DE B para 2) e Z é b (que nesse momento já vale 2). Então, temos:
X = Y + Z => X = b++ + b => X = 1 + 2 => X = 3 (por sinal, X é b, então: b = 3)
Finalizando o código, a linha System.out.println(a+"-"+b); exibirá: 2-3
Ou seja, o que tá lascando aqui, na verdade, é essa confusão que você está fazendo entre Java e C e a sua forma de tratar o pessoal que está aqui tentando te ajudar.
Continue tentando. (Mas daí para eu te desejar sucesso, já seria hipocrisia).
Fui.
Obs.: Não perca seu tempo deixando comentários dirigidos a mim, pois, como já disse antes, essa foi a última vez que me dirigi a você (só espero que você mude seu jeito, pois ter alguém assim por aí não é bom para ninguém).[/quote]
Bom meu amigo em primeiro plano, tome um chásinho que é bom,respire fundo e leia com calma o que esta escrito a partir de agora.
Caso nao consiga va para sexta-feira na sessao do descarrego na igreja
Universal mais proxima!!
1)Nunca quis encontrar furos na linguagem java, primeiro pq gosto e segundo a considero muito eficiente
2)Nao estou aqui para criticar ninguém, defato ate o momento achei que sua resposta nao chegasse a uma solucao para todos os casos!
3)Bote vc uma coisa na sua cabeca pequena, com essa ARROGANCIA nao se chega a lugar algum.
E agora vou te mostrar como VC CONTINUA SEM SABER SOLUCIONAR O PROBLEMA EM QUESTAO
se vc tem uma expressao
a=0;
a=a++ + a++;
entao pela tua incrivel logica e pelo teu super altissimo elevadissimo nivel de conhecimento vc deveria saber pq o resultado dessa espressao é 1
eu ja encontrei a resposta e nao tem nada a ver com toda essa tua louca explicao que eu chamaria de ENROLATION!
Na verdade meu amigo mestre em java, TODA expressao matematica é representada atráves de arvores mas nao aquelas que vc pensa ,ok?
Em segundo lugar, existem caminhos para percorrer esta arvore devido ao fato de ouver preferencias nas vária operecoes…Não gastar muito tempo
Para expressoes com operadores unários o compilador cria uma arvore e a percorre de maneira In_order ,para o pós incremento, o percurso é entao Pré_order.
Me diz agora,se sabes tanto? Qual foi a faculdade que te formates ?pois este assunto é de 2 semestre meu amigo e nao precisa ter um certificado para responder tal questao ou chamarse Rafael
Dito isso reflita comigo SERA QUE REALMENTE MEU CONHECIMENTO É TAO GRANDE ?Vc me lembra a historia da formiguinha,nao vou demorar.
Certa vez uma formighinha ao voltar para o formigueiro esbarrou-se no meio de uma montanha composta por cristais de acucar,com a maior felicidade to mundo recolheu um cristal e foi esbanjar para todas as outras formighinhas como ela é corajosa e sagaz,no entanto
o resto do acucar ficou lá, pois para aquela simples formiguinha foi o suficiente.MORAL DA HISTORIA O VERDADEIRO SABIO É AQUELE QUE TEM CONHECIMENTO DE QUANTO ELE REALMENTE NAO SABE
Pense bem entao antes de falar besteira,respire sempre fundo e analize quem vc é.
Para min ninguém…