Programa em java simples:

class IMP{
public station void main (String[] args){
int a, b, c;
a=c=40;
a=b++ + b++;
System.out.println(“valor de b=”+b);
System.out.println(“valor de a=”+a);

a=18;
b=23;
boolean x = a > b || b++ > 3;
System.out.println(“valor de b=”+b);
System.out.println(“valor de x=”+x);

Quais os valores que apareceram na tela, e por que?

[i]eu coloquei aki pra testar,
do jeito que tá aí vai dar uns pauzinhos!!!
alguns erros de sintaxe
e também pq a variável B não foi inicializada…

[code]
class IMP{
public static void main (String[] args){//o tipo correto é static
int a, b, c;

	a=c=40;
	a = b++ + b++;// aki dá pau, pq a variavel b não tem nenhum valor
	System.out.println("valor de b="+b);
	System.out.println("valor de a="+a);

	a=18;
	b=23;
	boolean x = a > b || b++ > 3;
	System.out.println("valor de b="+b);
	System.out.println("valor de x="+x);
}

}[/code]

o resultado ao executar é isso,
levando em consideração que inicializei b com zero…

[code]class IMP{
public static void main (String[] args){
int a, b=0, c;

	a=c=40;
	a = b++ + b++;
	System.out.println("valor de b="+b);
	System.out.println("valor de a="+a);

	a=18;
	b=23;
	boolean x = a > b || b++ > 3;
	System.out.println("valor de b="+b);
	System.out.println("valor de x="+x);
}

}[/code]

valor de b=2
valor de a=1
valor de b=24
valor de x=true

mas não entendi pq o a = 1…

vou dar uma pesquisada e qlqr coisa posto aki!!!

Eu tambem fiquei com essa duvida

Não sei o que você está tentando fazer gafanhoto, mais como é de regra, variáveis dentro de métodos ou seja variáveis locais não são inicializadas por padrão, como as variáveis de instância ou estáticas dependendo da variável com 0, 0.0 ou null. Então “a = b++ + b++;” vai da erro de compilação, se fosse variável de instância iria somar assim “a = (0 = 0+1) + (0 = 0+1)”.

Rafael,
eu debuguei o programa
e pelo que eu vi acontece o seguinte:
o valor de “b” primeiro é jogado para a variavel “a” e só depois é incrementado…

para vc ver certinho mude o seu código
deixe assim

[code]
class IMP{
public static void main (String[] args){
int a, b=0, c;

	a=c=40;
	int y = b++;
	int z = b++;
	a =y + z;
	System.out.println("valor de y="+y);
	System.out.println("valor de z="+z);
	System.out.println("valor de b="+b);
	System.out.println("valor de a="+a);

	a=18;
	b=23;
	boolean x = a > b || b++ > 3;
	System.out.println("valor de b="+b);
	System.out.println("valor de x="+x);
}

}[/code]

É uma solução básica de pré-incremento e pós-incremento, ou seja em pós-incremento ,“a = b++ + b++;” b é somado só depois que sai dessa expressão, a = (b é igual a 0, 0=0+1) + (b continua valendo 0, 0=0+1) então “a” é igual a 1 mais “b” é = 2.

Vamos fazer de outra maneira, se fosse assim por exemplo pré-incremento “a = ++b + ++b;”, ficaria “a = (b é igual a 0, 0 = 0 +1 soma =(1)) + (b agora está valendo 1 da soma anterior, 1 = 1 + 1, b agora é (2) ); - então 2 + 1 = 3” ok?

Então o que vai aparecer será:
b=2;a=1
b=24;x=true

isso mesmo?

owww legal!!!

não sabia dessa!!
então o incremento só é feito depois do fim da expressão!!
poxa, legal!!!

valew… :lol: