ricardo13:
olá pessoal,
Aproveitando essa questão, eu tive uma dúvida relacionada a essa expressão:
y = x++ + ++x;
Analisando primeiramente, eu vi o 1º termo (x++) só seria incrementado após a toda a operação.
Mas me parece que o valor x é incrementado assim que ele foi analisado.
Ainda estou confuso com relação ao 1º termo em "Quando" a variavel vai ser incrementada ??
Muito Obrigado
Ricardo
bom...to colando o código denovo...apesar de q só seria necessario essa linha ai
bom...no System.out de antes, repare que o x esta com -1... e repare que o x foi incrementado antes da expressão (o segundo valor da soma é ++x, isso significa que primeiro é feito o incremente, e depois a soma da linha q vc coloco)
ou seja...o x ai nessa soma vai valer 0... 0 + 0 = 0, então o y vai valer isso
(eu botei um System.out depois pra confirma)
depois disso o x incrementa denovo e vai valer 1...
o problema esta depois, em "System.out.println(x + y + ++x); "...
ao que me parece, primeiro é feito x + y, para depois fazer esse resultado mais ++x... x estava com 1, +0 =1... e só ai então que esse resultado vai somar com ++x, pra isso x vai valer 2 a partir dai... então 1(resultado anterior) +2 = 3
eu posso estar falando besteira quanto a essa parte de pega os dois primeiros e só depois o resultado com o proximo, mais o resultado no final do post confirmo isso (repare que o ++x não aumento o primeiro x da espressão)
public class Static {
static{ //Só para confundir? como na desatenção passa por um construtor???
int x = 5;
}
static int x,y;
public static void main(String args[]){
x--; //x nao esta sendo inicializado entao vale 0 decrementando vira -1
myMethod();
System.out.println(x + y + ++x); //x vale 1, y vale 0 e ++x vale 2 (o incrementador na frente incrementa antes e usa depois)
}
public static void myMethod(){
System.out.println(x);
//por ser estatico x nao perde o valor de -1
y = x++ + ++x; //y vale 0 e x vale 1
System.out.println(y);//eu que botei esse System.out por conta propria
}
}
java Static:
C:\>java Static
-1
0
3