Atribuição de valores

5 respostas
henqqq

Eae,

Estou com uma duvida na logica de atribuição de valores nesse código:

int [] array = {10, 20, 30};
x = 0;
array[x] = x = 100;

O resultado é um array com os valores [100, 20, 30]

Alguem me da uma luz ai, pq isso ai nao ta fazendo sentido nenhum pra mim!
Valeu!

5 Respostas

rnldfll
int [] array = {10, 20, 30};  
//aqui o array[0] = 10
x = 0;  

//isso aqui é a mesma coisa de dizer array[na posição de x que até o momento é 0] = 100;
array[x] = x = 100;  
//então o array[0] passa a ser 100
yurifw

é o seguinte cara:

int [] array = {10, 20, 30};  //cria o array, aqui vc ta dizendo que o array tem 3 posições, 10 na posição 0, 20 na posição 1 e 30 na posição 2
    x = 0;  
    array[x] = x = 100;  // aqui voce ta pegando o valor da psoição 0 (que foi definido como 0 na linha anterior, depois voce ta definindo 100 como valor da variavel x, ai vc atribui a variavel x pro array
henqqq

Ok. Valeu a resposta pessoal, mais eu sei o que aconteceu com os valores.

O que eu quero saber é o por que isso acontece.

Quando operadores (menos os de atribuição) aparecem na expressão eles são avaliados da esquerda para direita.
E os operadores de atribuição são avaliados da direita para esquerda.

sendo assim, por essa lógica (que nem tenho certeza se está correta):

expressão inteira

array[x] = x = 100;

1º a expressao da direita, temos:

x = 100; //a váriável x, que antes era 0, agora recebe o valor 100

2º atribuição

array[x] = x; //o elemento do array no indice x (que seria 100 á essa altura, devida a 1º atribuição) recebe o valor 100.

Pela lógica de atribuição, da direita para esquerda, a 2º atribuição resultaria em uma Exception

Acho que minha duvida ficou mais clara agora, ou não. kkk

rnldfll
int [] array = {10, 20, 30};     
x = 0;

//pega a posição 0 pq o x vale 0 até então; 
array[x] = x = 100;
//nessa parte o x passa a valer 100;
rnldfll
int x = 0;
System.out.println(x  = x + 100);
//resultado: 100
		
		
//se sua logica estivesse certa eu acho que esse exemplo nem funcionaria porque ia ser uma confusão kkk
Criado 15 de março de 2013
Ultima resposta 15 de mar. de 2013
Respostas 5
Participantes 3