Certificação - essa é dificil

O próprio ‘a’ já está sendo incrementado, então por que a ele mesmo atribuí-lo? (minha explicação, não tenho explicação técnica)
O interessante é que, se você colocar apenas a++, a impressão será 2.
Se continuar duvidando, faça o teste.
Eu até agora e “sempre” continuarei a duvidar … risos …
Engraçado. Não?
Esse exemplo não tem no livro da Kathy, mas se encontra no livro do Roberto Rubinstein …
Tá aí … algo que o livro não trouxe (pelo menos eu não vi no capítulo sobre atribuições)… :evil: :evil:
Tem algo a mais que alguém não viu no livro???
[/quote]

engraçado é que se tu fizer esse comando em C:

int a = 0;
a = a++;

a resposta é 1… ao contrário do java em que a resposta é 0.

pesquisando mais sobre o assunto …
http://www.guj.com.br/posts/list/69199.java

é rpz implementei aqui e deu 0… maior confusao isso :frowning:

public class DuviA {

	
	public static void main(String[] args) {
		int y=0;
		y=y++;
		System.out.println(y);

	}

}

[quote=LPJava]é rpz implementei aqui e deu 0… maior confusao isso :frowning:

[code]
public class DuviA {

public static void main(String[] args) {
	int y=0;
	y=y++;
	System.out.println(y);

}

}
[/code][/quote]

LP, isso acontece pq a atribuição é a última coisa a acontecer. (procure na net ou em algum livro uma tabela com a precedência dos operadores).

a linha y = y++ significa atribuia a y o valor de y++… o resultado de y++ é “retorne 0 e incremente y para 1”… depois que y++ executou, o valor de y é 1 e o valor a ser atribuído a y é 0. Em seguida, a atribuição é executada e o valor de y passa a ser 0;

se fosse x = y++ o resultado seria x = 0 e y = 1… mas como ao invés do x temos o y, então o valor final de y é 0…

Deu pra sacar?

Abraços.

Resultado b é 0

int a = 0;
int b = a++; // o pos incremento só ocorre quando o 'a' for referenciado novamente.// 'b' é uma cópia de 'a', 
// como 'a' não foi referenciado até o final da instrução, 'b' é igual a 0
System.out.println(b);

Resultado b é 1

int a = 0;
int b = a++ + a; // como uma nova referencia é feita pra 'a'
// o incremento de a é realizado no término da operação e atribuído a 'b'.
System.out.println(b);

Resultado b é 0

int a = 0;
int b = a + a++; // como o pos incremento é realizado depois da ultima referencia pra 'a', 
// o incremento só irá ocorrer em uma nova referencia. 
// neste caso 0 + 0 = 0 
System.out.println(b);

Blz? :thumbup:

é conseguir entender… eu que fiz confusao em copo d’agua huauha… depois fui pensando nisso qdo ia para casa… e vi realmente… que nao tem pq ser outro valor:

int a=0;
int c= a++;

nao tem pq c ser 1… eu que me confudir… mais valeu ai pelas dicas… e parabens ao cidadao que abriu esse topico… boa ! :smiley: