Por que disso?

5 respostas
A
  1. int [] a = {4,4};
  2. int b=1;
  3. a[b] = b = 0;

Alguem pode me dar exmplos e me responder o que acontece??
[]’

Alan

5 Respostas

wbsouza

int [] a = {4,4}; // a[0] igual a 4, e a[1] igual a 4
int b=1; // b igual a 1
a[b] = b = 0; // primeiro b recebe 0, depois a[0] recebe o valor de b que é zero.

Em atribuições seguidas (como acontece na terceira linha) acontece da direita pra esquerda.

[]s, Welington B. Souza

maxguzenski

mas a[b] é resolvido antes das atribuicoes…

logo,
a[1] = b(q é 1) = 0

resposta:
a[0] = 4 e a[1] = 0

t+

A

Mais por que o indice do B vai ser 1 e o resto vai ser zero??!!!
Não é da direita para a esquerda??

[]'s

Alan

P
a[b];       //1º a[b] e b nesse momento é igual a 1 então:

a[1];

b=0;      //2º b recebe 0;

a[1] = b;//por ultimo vem essa atribuição, então:

a[1] = 0;
wbsouza

Me desculpem pessoal, cometí um engano e vou tentar corrigí-lo.

int [] a = {4,4}; // a[0] == 4, a[1] == 4
int b = 1;

// a instrução será quebrada em duas:
a[b] = b = 0;

Quando você tem uma expressao do tipo { a = b + c; } teremos:
a ira receber o resultado da expressao “b + c”. é mais ou menos
isso que o java faz. Para simplificar, vamos “entender” que tudo que
vem depois do sinal de atribuicao é uma expressão. Logo esta expressão
tem que ser resolvida primeiro para depois acontecer a atribuiçao.

Assim temos que:
a[b] = “expressao qualquer”, ou melhor
a[1] = “expressao qualquer”

Agora vamos tratar da "expressao qualquer"
b = 0;

Neste momento a espressao qualquer foi resolvida e tem o valor igual a zero.

Agora sim b[1] receberá o resultado da expressao;
a[1] = 0;

No final vai ficar assim:

a == {4, 0}

[]s, Welington B. Souza

Criado 28 de junho de 2003
Ultima resposta 2 de jul. de 2003
Respostas 5
Participantes 4