Operadores ++ e --

Galera, alguem sabe me explicar o que ocorre com este código?

public class Principal{
public static void main(String[] args){

	int x = 10;
	System.out.println(x++ +2);
	System.out.println(x);

}

}

Saida:
12
11

Nessa linha vc está somando 2 no X e esta incrementando(++), mas esse tipo de incremento só vai ter valor na próxima linha, se vc quisesse que o incremento ja fosse feito ai, deveria fazer "++x" ao invez de 'x++"

Por isso que
[code]System.out.println(x);[/code]
Te retorna 11, ele foi  incrementado na linha de cima ;)

Nessa linha vc está somando 2 no X e esta incrementando(++), mas esse tipo de incremento só vai ter valor na próxima linha, se vc quisesse que o incremento ja fosse feito ai, deveria fazer “++x” ao invez de 'x++"

Por isso que

Te retorna 11, ele foi incrementado na linha de cima :wink:

[quote=jandiro]Galera, alguem sabe me explicar o que ocorre com este código?

public class Principal{
    public static void main(String[] args) {
        int x = 10;
        System.out.println(x++ +2);
        System.out.println(x);
    }
}

Saida:
12
11[/quote]

Off-topic
Acho que os operadores ++ e – devem ter seu uso policiado, para evitar tais coisas que estão definidas na linguagem (e são herança do C++) mas que são difíceis de entender, e de qualquer maneira nem sempre são úteis. Por exemplo, seria mais claro fazer (e gera exatamente os mesmos bytecodes):

public class Principal{
    public static void main(String[] args) {
        int x = 10;
        System.out.println(x + 2);
        x++; // (ou ++x, neste caso tanto faz)
        System.out.println(x);
    }
}

Para todos (desde os principiantes até os “masters of the universe” ) :

É aconselhável usar ++ ou – apenas sozinho (como ++x), não em combinações (como x++ + 2), que embora estejam claramente definidas na linguagem (não é o caso do C++), são difíceis de entender.