Operadores

Galera, estava estudando e fiqquei com uma duvida.

int r; 
int n = 10;
r = n++ + 1; 
System.out.println(r); //Imprimi 11
n = 10;
r = ++n + 1;
System.out.println(r); //Imprimi 12

Qual a diferença disso?

Aqui explica

http://qualadoce.blogspot.com.br/2010/10/pre-ou-pos-quando-usar.html

flw

Acho que deu pra entender, mas é meio confuso…

int a = 5, b;

b = a++;

Qual o valor das variáveis a e b?
O valor esperado para a é 6 e para b é 5.

Se utilizarmos o operador pré-fixado, conforme exemplo abaixo:

int a = 5, b;

b = ++a;

O valor esperado para ambas as variáveis é 6.

Desculpe li errado é isso mesmo que o pessoal disse

int r; int n = 10; // No pos eu incremento apos eu somar o n + 1. r = n++ + 1; // pos incremento ele pega o valor incrementa 1 e imprime System.out.println(r); //Imprimi 11 n = 10; // No pre eu incremento primeiro o ++n que é igual a 11 e somo o 1. r = ++n + 1; // no pré incremento ele incrementa 1 depois soma +1 e ai sim imprime System.out.println(r); //Imprimi 12

Se o operador vem depois, o incremento é feito após a operação (no caso atribuição).

Se o operador vem antes, o incremento é feito antes da operação.

[quote=shenn]Acho que deu pra entender, mas é meio confuso…

int a = 5, b;

b = a++;

Qual o valor das variáveis a e b?
O valor esperado para a é 6 e para b é 5.

Se utilizarmos o operador pré-fixado, conforme exemplo abaixo:

int a = 5, b;

b = ++a;

O valor esperado para ambas as variáveis é 6.[/quote]

Posso até explicar, mas acho melhor vc ler de novo e
com calma que vc vai entender

Tipo até onde eu entendi

int r; 
int n = 10;
// No pos eu incremento apos eu somar o n + 1.
r = n++ + 1; 
System.out.println(r); //Imprimi 11
n = 10;
// No pre eu incremento primeiro o ++n que é igual a 11 e somo o 1.
r = ++n + 1;
System.out.println(r); //Imprimi 12

Entendii UHSAHUASHUASUHAS

No pos eu estou acrescentando na variavel a; (Já que eu faço o a++ depois de atribuir ele para o b)

e no pre eu acrescento e depois somo… (ja que eu faço primeiro faco o ++a e depois eu atribuo ele para a variavel b)

por isso os valores são diferentes…

(não sei se me expressei bem)

Como de costume, espero que você use essas aberrações impossíveis de entender (ou seja, botar esses operadores de pré e pós-incremento dentro de outras expressões) só para estudar para a prova de certificação.

Em código profissional, não use coisas que você mesmo não entende depois de escrever :frowning:

entanglement

Pode ter certeza que eu não quero usar isso nunca!! Só pra certificação mesmo!

[quote=entanglement]Como de costume, espero que você use essas aberrações impossíveis de entender (ou seja, botar esses operadores de pré e pós-incremento dentro de outras expressões) só para estudar para a prova de certificação.

Em código profissional, não use coisas que você mesmo não entende depois de escrever :([/quote]

Claro, imagine encontrar algo assim num código profissional:

x += x++ * (--x);

Ninguém merece…