Duvida sobre atribuicoes

20 respostas
F

galera essa nao entendi será que alguem pode me explicar?

public static void main(String[] args) throws IOException {
   
    int i=3;
    i=+10;
    System.out.println(" " +i); //resultado 10 esqueceu do 3??
    int y=3;
    y+=10;
    System.out.println(" " +y);//resulatdo 13
     

}

20 Respostas

psandrelli

No primeiro caso vc está atribuindo um novo valor à variável “i”, no caso um inteiro positivo. Poderia ser um negativo também.

No segundo caso vc está somando 10 à variável “y” que já tem valor 3. É como se fosse assim:y = y + 10;

Giulliano

psandrelli:
No primeiro caso vc está atribuindo um novo valor à variável “i”, no caso um inteiro positivo. Poderia ser um negativo também.

No segundo caso vc está somando 10 à variável “y” que já tem valor 3. É como se fosse assim:y = y + 10;

No caso o =+ é uma atribuição de pós incremento não significa q ele esta acrescentanto valores positivos ou negativos…não é isso ???

Kassiane_Pretti

Então isso:

i=+10;

É equivalente a:

i=10; i= i + 10;

??? :?

Muito estranho --’

Kassiane_Pretti

Pensando melhor,acho que quando temos =+ ocorre apenas a atribição do valor à variavel… Como psandrelli falou eu poderia fazer isso:

i =+10;
i=-10

Não seria isso? :roll:

Giulliano

Na verdade não deveria existir esse sinal de atribuição, seguindo uma lógica :

//Considerando Sempre q x vale 10 em todos prints...

System.out.println(x++);  // 10

System.out.println(++x);  // 11

System.out.println(x+=10);  // 20

System.out.println(x=+10);  // ??? Aqui vai sair 10...

Se o operador de incremento funciona ele teria q somar depois e não adicionar um novo valor à varíavel…meu entendimento é esse.

psandrelli

Coloca isso no Eclipse e aperte Ctrl + Shift + F e veja o que acontece.

int i = 3;
i =+ 10;
Kassiane_Pretti

Giulliano:
Na verdade não deveria existir esse sinal de atribuição, seguindo uma lógica :

//Considerando Sempre q x vale 10 em todos prints...

System.out.println(x++);  // 10

System.out.println(++x);  // 11

System.out.println(x+=10);  // 20

System.out.println(x=+10);  // ??? Aqui vai sair 10...

Se o operador de incremento funciona ele teria q somar depois e não adicionar um novo valor à varíavel…meu entendimento é esse.

Claro mas no caso não seria um outro sinal de atribuição, se analisarmos tomando os numeros positivos e negativos.
A interpretação do sinal =+ foi a seguinte ao meu entender:

i = +10; // seria a msm coisa que i = 10 e i =+10
i = -10; //seria a msm coisa que i =-10

No caso só faltou o espaço entre os sinais… :?

Giulliano

“CTRL + Shift + F” até onde eu sei formata seu código…

dlt

Uma coisa é uma coisa, outra coisa é outra coisa.
Pós incremento não tem nada a ver com isso.
Não confunda i++ com i+=10 com i=+10; são coisas diferentes.
A primeira explicação do psandrelli é que tá certo.

Giulliano

Tudo bem vou encarar isso como bizarrice…imagine isso num código :

int y +=+10;

feio né…assumindo q se um número vem sem o sinal de + de qualquer maneira ele é positivo…mas tudo bem…ta valendo…

Kassiane_Pretti

Pós decremento não tem nada a ver com isso.
Não confunda i++ com i+=10 com i=+10; são coisas diferentes.

Isso msm não pode confundir as duas coisas:

int i = 3; i++; // i passa a valer 4 i += 6; // i passa a valer 10, idem a i = i + 6

Andre_Brito

Giulliano:
Na verdade não deveria existir esse sinal de atribuição, seguindo uma lógica :

//Considerando Sempre q x vale 10 em todos prints...

System.out.println(x++);  // 10

System.out.println(++x);  // 11

System.out.println(x+=10);  // 20

System.out.println(x=+10);  // ??? Aqui vai sair 10...

Se o operador de incremento funciona ele teria q somar depois e não adicionar um novo valor à varíavel…meu entendimento é esse.

Cara, acho que o primeiro tá errado.

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

		x = 10;
		++x;
		System.out.println(" " + x);

		x = 10;
		x += 10;
		System.out.println(" " + x);

		x = 10;
		x =+ 10;
		System.out.println(" " + x);

		x = 10;
		x =- 10;
		System.out.println(" " + x);		
	}
}

A saída:

O psandrelli está certo.

Giulliano

dlt:
Uma coisa é uma coisa, outra coisa é outra coisa.
Pós decremento não tem nada a ver com isso.
Não confunda i++ com i+=10 com i=+10; são coisas diferentes.
A primeira explicação do psandrelli é que tá certo.

Não estou discordando da explicação dele…estou dizendo que se " i += 10 " soma i + 10 e armazena na varíavel i…então o contrário tb deveria funcionar i =+ 10;

Kassiane_Pretti

Giulliano:
KassiPretti:

Se o operador de incremento funciona ele teria q somar depois e não adicionar um novo valor à varíavel…meu entendimento é esse.

Claro mas no caso não seria um outro sinal de atribuição, se analisarmos tomando os numeros positivos e negativos.
A interpretação do sinal =+ foi a seguinte ao meu entender:

i = +10; // seria a msm coisa que i = 10 e i =+10
i = -10; //seria a msm coisa que i =-10

No caso só faltou o espaço entre os sinais… :?

Tudo bem vou encarar isso como bizarrice…imagine isso num código :

int y +=+10;

feio né…assumindo q se um número vem sem o sinal de + de qualquer maneira ele é positivo…mas tudo bem…ta valendo…

O sinal de + não é necessario, mas sua utilização neste caso não é proibida…

psandrelli

Por isso mesmo, ele separa os sinais por não existir esse operador “=+”. Se fosse um operador válido, ele não iria alterar, assim como não separa “+=”.

Giulliano

Cara aí vc vascilou…desse jeito vai sair 11 pq já foi atribuida a soma…mas em tempo real não é assim que acontece…

Tenta do jeito q eu fiz e vc vai ver q funciona…

Giulliano

Por isso mesmo, ele separa os sinais por não existir esse operador “=+”. Se fosse um operador válido, ele não iria alterar, assim como não separa “+=”.

ahhhhhh…entendi o motivo…

dlt

não deveria funcionar.
"Nem um pouco! Ora, você poderia dizer que ‘vejo o que como’ é a mesma coisa que ‘como o que vejo’!’

– O Chapeleiro de Alice no País das Maravilhas.

ahhahahaha

Andre_Brito

Vacilei por que? Não entendi :?: :?:
Eu fiz sempre a atribuição do 10 antes de entrar nos println porque você disse… achei que você tinha feito também.

F

psandrelli:
No primeiro caso vc está atribuindo um novo valor à variável “i”, no caso um inteiro positivo. Poderia ser um negativo também.

No segundo caso vc está somando 10 à variável “y” que já tem valor 3. É como se fosse assim:y = y + 10;

é mesmo cara, falta de atencao!!

Criado 22 de janeiro de 2008
Ultima resposta 22 de jan. de 2008
Respostas 20
Participantes 6