Programa em java simples:

8 respostas
R
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?

8 Respostas

Natalia_Lima

[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...

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);
	}
}
Natalia_Lima

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

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);
	}
}

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!!!

R

Eu tambem fiquei com essa duvida

taaqui

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)”.

Natalia_Lima

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

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);
	}
}
taaqui

É 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?

R

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

isso mesmo?

Natalia_Lima

owww legal!!!

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

valew… :lol:

Criado 8 de julho de 2009
Ultima resposta 8 de jul. de 2009
Respostas 8
Participantes 3