Re: [java-list] Código Obscuro!
É que na verdade "goto _L2" deve ser algo do tipo goto_L2 mesmo, talvez o caractere entre goto e _L2 não seja vísvel, ou a palavra goto foi criada pelo ofuscadador em algum ponto. Por isso seu JDK não compila ela. Lincolm - Original Message - From: Guilherme To: [EMAIL PROTECTED] Sent: Monday, April 15, 2002 5:36 PM Subject: Re: [java-list] Código Obscuro! ola Lincon!, q esta ofuscado eu sabia, mas todos os ofuscador q eu vi ate hj so trocavam nome de metodos e de variaveis.. neste caso tinha varios goto achei muito estranto isso foi obra do ofuscador? Etem outra: ojdk nao compila a linha q tem "goto"q é uma palavra reservada, mas compila a linha qte "_T1:" para o java o q é o "_T1:" ou "str_qualquer:" guilherme. - Original Message - From: Lincolm Ferreira de Aguiar To: [EMAIL PROTECTED] Sent: Monday, April 15, 2002 1:25 PM Subject: Re: [java-list] Código Obscuro! Olá Guilherme. Esse código está ofuscado. O programador não tinha a intenção de "permitir" que outras pessoas tivessem acesso a ele então usou um ofuscador de códigos. Lincolm - Original Message - From: Guilherme To: [EMAIL PROTECTED] Sent: Monday, April 15, 2002 11:05 AM Subject: [java-list] Código Obscuro! Quer ter seu próprio endereço na Internet?Garanta já o seu e ainda ganhe cinco e-mails personalizados.DomíniosBOL - http://dominios.bol.com.br ola! Galera!!! decompilei um codigo p/ dar uma estudada e encontrei a a seguinte faixa de codigo: if(!flag) goto _L2; else goto _L1_L1:g1.setColor(Color.red); _L10: if(l1 != 0) goto _L4; else goto _L3_L3: g1.setColor(Color.black); Então..; eu nunca vi uma implementação de "goto" no java, e quando eu tentei compilar tb deu erro ai eu naum entendi mais nada dava erro de "illegal start of expression" no goto.. algem ja viu isso? guilherme [EMAIL PROTECTED]
Re: [java-list] Código Obscuro!
Oi amigos do Fórum, fiquei curioso sobre este código, apesar de ser iniciante, peguei um livro sobre java extraidos do "Java 1001 Dicas de Programação - Makron Books" ,a respeito do goto dá uma olhadinha: Pag 138 e 139 Java não possui a instrução Goto Durante anos os programadores foram alertados dos perigos de utilizar a instrução goto.Em geral, as críticas à instrução goto evoluiram porque o programador abusava de goto, o que gerava um código difícil de ler.Porém, na realidade, a instrução goto não é em si ruim, e de fato o uso de goto frequentemente gera códigos muito fáceis de compreender. Apesar do fato de o uso adequado da instrução goto poder gerar código compreensível e bem estruturado, a instrução goto nunca foi popular em C/C++. Em qualquer caso, Java não utiliza a instrução goto. Porém goto é uma palavra reservada, de forma que o compilador poderá detectar qualquer uso errado da construção goto. e outra Pag 42 Palavras-chave Significado goto Reservado para utilização futura (Não é utilizadoatualmente em Java.) Bom a minha pergunta é ou não é palavra-chave reservado?? Será que tem alguma versão do Java anterior ou as primeiras versões estão funcionando esta palavra reservada. Desculpe se falar besteira me corrigem, Será que seu JVM com release antigo, está adpatado à receber este código goto. Para mim não caiu da minha cabeça como a JVM sabe que aquele codigo é um ofuscador. Até mais!! Antonio - Original Message - From: Lincolm Ferreira de Aguiar To: [EMAIL PROTECTED] Sent: Tuesday, April 16, 2002 8:16 AM Subject: Re: [java-list] Código Obscuro! É que na verdade "goto _L2" deve ser algo do tipo goto_L2 mesmo, talvez o caractere entre goto e _L2 não seja vísvel, ou a palavra goto foi criada pelo ofuscadador em algum ponto. Por isso seu JDK não compila ela. Lincolm - Original Message - From: Guilherme To: [EMAIL PROTECTED] Sent: Monday, April 15, 2002 5:36 PM Subject: Re: [java-list] Código Obscuro! ola Lincon!, q esta ofuscado eu sabia, mas todos os ofuscador q eu vi ate hj so trocavam nome de metodos e de variaveis.. neste caso tinha varios goto achei muito estranto isso foi obra do ofuscador? Etem outra: ojdk nao compila a linha q tem "goto"q é uma palavra reservada, mas compila a linha qte "_T1:" para o java o q é o "_T1:" ou "str_qualquer:" guilherme. - Original Message - From: Lincolm Ferreira de Aguiar To: [EMAIL PROTECTED] Sent: Monday, April 15, 2002 1:25 PM Subject: Re: [java-list] Código Obscuro! Olá Guilherme. Esse código está ofuscado. O programador não tinha a intenção de "permitir" que outras pessoas tivessem acesso a ele então usou um ofuscador de códigos. Lincolm - Original Message - From: Guilherme To: [EMAIL PROTECTED] Sent: Monday, April 15, 2002 11:05 AM Subject: [java-list] Código Obscuro! Quer ter seu próprio endereço na Internet?Garanta já o seu e ainda ganhe cinco e-mails personalizados.DomíniosBOL - http://dominios.bol.com.br ola! Galera!!! decompilei um codigo p/ dar uma estudada e encontrei a a seguinte faixa de codigo: if(!flag) goto _L2; else goto _L1_L1:g1.setColor(Color.red); _L10: if(l1 != 0) goto _L4; else goto _L3_L3: g1.setColor(Color.black); Então..; eu nunca vi uma implementação de "goto" no java, e quando eu tentei compilar tb deu erro ai eu naum entendi mais nada dava erro de "illegal start of expression" no goto.. algem ja viu isso? guilherme [EMAIL PROTECTED]
[java-list] Código Obscuro!
ola! Galera!!! decompilei um codigo p/ dar uma estudada e encontrei a a seguinte faixa de codigo: if(!flag) goto _L2; else goto _L1_L1:g1.setColor(Color.red); _L10: if(l1 != 0) goto _L4; else goto _L3_L3: g1.setColor(Color.black); Então..; eu nunca vi uma implementação de "goto" no java, e quando eu tentei compilar tb deu erro ai eu naum entendi mais nada dava erro de "illegal start of expression" no goto.. algem ja viu isso? guilherme [EMAIL PROTECTED]
RES: [java-list] Código Obscuro!
sinistro nunca vi tb.. Anderson Macedo Silva Impactools - The wise solution that fits Centro Empresarial de São Paulo Telefone: 5853-2136 -Mensagem original-De: Guilherme [mailto:[EMAIL PROTECTED]]Enviada em: segunda-feira, 15 de abril de 2002 11:06Para: [EMAIL PROTECTED]Assunto: [java-list] Código Obscuro! ola! Galera!!! decompilei um codigo p/ dar uma estudada e encontrei a a seguinte faixa de codigo: if(!flag) goto _L2; else goto _L1_L1:g1.setColor(Color.red); _L10: if(l1 != 0) goto _L4; else goto _L3_L3: g1.setColor(Color.black); Então..; eu nunca vi uma implementação de "goto" no java, e quando eu tentei compilar tb deu erro ai eu naum entendi mais nada dava erro de "illegal start of expression" no goto.. algem ja viu isso? guilherme [EMAIL PROTECTED]
Re: [java-list] Código Obscuro!
Olá Guilherme. Esse código está ofuscado. O programador não tinha a intenção de "permitir" que outras pessoas tivessem acesso a ele então usou um ofuscador de códigos. Lincolm - Original Message - From: Guilherme To: [EMAIL PROTECTED] Sent: Monday, April 15, 2002 11:05 AM Subject: [java-list] Código Obscuro! Quer ter seu próprio endereço na Internet?Garanta já o seu e ainda ganhe cinco e-mails personalizados.DomíniosBOL - http://dominios.bol.com.br ola! Galera!!! decompilei um codigo p/ dar uma estudada e encontrei a a seguinte faixa de codigo: if(!flag) goto _L2; else goto _L1_L1:g1.setColor(Color.red); _L10: if(l1 != 0) goto _L4; else goto _L3_L3: g1.setColor(Color.black); Então..; eu nunca vi uma implementação de "goto" no java, e quando eu tentei compilar tb deu erro ai eu naum entendi mais nada dava erro de "illegal start of expression" no goto.. algem ja viu isso? guilherme [EMAIL PROTECTED]
Re: [java-list] Código Obscuro!
Cara, goto é palavra reservada, mas nao tem implementação. é o caso tambem do const. []s Leandro Guilherme [EMAIL PROTECTED] on 15/04/2002 11:35:33 Please respond to [EMAIL PROTECTED] To: [EMAIL PROTECTED] cc: Subject: [java-list] Código Obscuro! ola! Galera!!! decompilei um codigo p/ dar uma estudada e encontrei a a seguinte faixa de codigo: if(!flag) goto _L2; else goto _L1 _L1: g1.setColor(Color.red); _L10: if(l1 != 0) goto _L4; else goto _L3 _L3: g1.setColor(Color.black); Então..; eu nunca vi uma implementação de goto no java, e quando eu tentei compilar tb deu erro ai eu naum entendi mais nada dava erro de illegal start of expression no goto.. algem ja viu isso? guilherme [EMAIL PROTECTED] -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] Código Obscuro!
Guilherme, no sei exatamente qual o termo utilizado para isso, mas sei que existem formas de se "embaralhar" um cdigo para que ao ser "descompilado" ele retorne cdigo aparentemente sem sentido. Algum por favor me corrija caso eu esteja errado! []s Carlos Guilherme wrote: 000d01c1e486$9c8b25c0$[EMAIL PROTECTED]"> ola! Galera!!! decompilei um codigo p/ dar uma estudada e encontrei a a seguinte faixa de codigo: if(!flag) goto _L2; else goto _L1 _L1: g1.setColor(Color.red); _L10: if(l1 != 0) goto _L4; else goto _L3 _L3: g1.setColor(Color.black); Ento..; eu nunca vi uma implementao de "goto" no java, e quando eu tentei compilar tb deu erro ai eu naum entendi mais nada dava erro de "illegal start of expression" no goto.. algem ja viu isso? guilherme [EMAIL PROTECTED]
Re: [java-list] Código Obscuro!
ola Lincon!, q esta ofuscado eu sabia, mas todos os ofuscador q eu vi ate hj so trocavam nome de metodos e de variaveis.. neste caso tinha varios goto achei muito estranto isso foi obra do ofuscador? Etem outra: ojdk nao compila a linha q tem "goto"q é uma palavra reservada, mas compila a linha qte "_T1:" para o java o q é o "_T1:" ou "str_qualquer:" guilherme. - Original Message - From: Lincolm Ferreira de Aguiar To: [EMAIL PROTECTED] Sent: Monday, April 15, 2002 1:25 PM Subject: Re: [java-list] Código Obscuro! Olá Guilherme. Esse código está ofuscado. O programador não tinha a intenção de "permitir" que outras pessoas tivessem acesso a ele então usou um ofuscador de códigos. Lincolm - Original Message - From: Guilherme To: [EMAIL PROTECTED] Sent: Monday, April 15, 2002 11:05 AM Subject: [java-list] Código Obscuro! Quer ter seu próprio endereço na Internet?Garanta já o seu e ainda ganhe cinco e-mails personalizados.DomíniosBOL - http://dominios.bol.com.br ola! Galera!!! decompilei um codigo p/ dar uma estudada e encontrei a a seguinte faixa de codigo: if(!flag) goto _L2; else goto _L1_L1:g1.setColor(Color.red); _L10: if(l1 != 0) goto _L4; else goto _L3_L3: g1.setColor(Color.black); Então..; eu nunca vi uma implementação de "goto" no java, e quando eu tentei compilar tb deu erro ai eu naum entendi mais nada dava erro de "illegal start of expression" no goto.. algem ja viu isso? guilherme [EMAIL PROTECTED]
Re: [java-list] código obscuro!!
Galera, isto ainda está gerando duvida, heim! Mas, lembrei-me do tempo da faculdade quando vi a explicacao para isto: i = 0 i = i++ Inicialmente, o compilador ve a atribuicao de 0 para i, e reserva esta atribuicao, porém, ele executa um incremento em i, antes de atribuir o zero para o i. É estranho, mas foi esta a explicacao que eu vi. - Original Message - From: Luiz Reginaldo [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Monday, March 11, 2002 9:12 AM Subject: Re: [java-list] código obscuro!! Silvio, Troque a atribuição i= i++ por algo como a= i++. Não utilize a mesma variável na atribuição. - Original Message - From: Silvio L. DeMorais [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Tuesday, March 05, 2002 4:57 PM Subject: Re: [java-list] código obscuro!! Caramba... esse troco estah gerando um monte de conversa mesmo. Resolvi dar uma testada nesse negocio. Testei nos seguintes compiladores C/C++ Compilador C/C++ padrao do Sistema HP (Unix) gcc compiler no Linux (RedHat 7.2) rodando em PC Intel Compilador C/C++ padrao do Sistema Cray (Cray T-3E) E as seguintes JVM's JDK 1.1.8 Sun JDK 1.2.2 Sun JDK 1.3.1_02 Sun JDK 1.4 Sun todos rodando em PC's Intel com Windows NT 4.0 SP 6 JDK 1.3.0 instalada num HP (Unix) Nao testei com JDK 1.0 porque nao tenho aqui no escritorio. Os testes foram os seguintes: para Java class PlusPlusADireitaRetornaZero public static void main (String[] a) { int i = 0; i = i++; System.out.println(i); } Para C #include stdio.h int main () int i = 0; i = i++; fprintf(%i \n, i); Para C++ (que eh a mesma coisa, no caso, mas... ) #include iostream int main () int i = 0; i = i++; cout i '\n'; Resultados: zero, sempre zero, jamais algo diferente de zero. Em todas as plataformas/linguagens. Ainda estou para ver uma situacao que retorne UM. Me digam qual o caso que retorna 1, mas mandem completo: Compilador, versao do compilador, SO, versao do SO, SP aplicados (se algum), plataforma de hardware usada (PC Intel, PC AMD, HP, ...). Silvio On Mon, 04 March 2002, Carlos Villela wrote Ate' agora, eu so vi programas deste tipo implementados em C/C++ resultarem em 1 (nos compiladores gcc e turboc-4.5) e implementacoes em Java retornarem 0 (nas jdks 1.3 e 1.4 da sun, jdk 1.3 da ibm). Em quais compiladores/JVMs vc viu este comportamento mudar? Sven van ´t Veer wrote: Não tem, até diversas compiladores C++ tem comportamento diferente, e parece diversas JVM também tem comportamento diferente. csuco wrote: o codigo em C ou C++... int main() { int i = 0; i = i++; fprintf (stdou,i = %ld,i); } teria exatamente o mesmo comportamento! Clebert -- Mensagem original --- De : Agnelo de Jesus [EMAIL PROTECTED] Para: [EMAIL PROTECTED] Cc : Data: Wed, 27 Feb 2002 09:05:45 -0300 Assunto : Re: [java-list] código obscuro!! Caro Cristiano, Quando você utiliza o incremento à direita do número,(i++), você primeiro retorna o número e depois soma 1. Para você fazer aquilo que pretendia,(não existe necessidade), você deveria utilizar o incremento à esquerda do número (++i). Isto vale também para a linguagem C++, verifique se o que você afirmou realmente ocorre, o que seria verdadeiramente obscuro :). Espero ter ajudado []s, Agnelo de Jesus. { int i = 0; i = i++; System.out.println(i); } Em 26 Feb 2002, [EMAIL PROTECTED] escreveu: Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Abraços, CristianoBS -- LISTA SOUJAVA -- -- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu- SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para java-list- [EMAIL PROTECTED] --- -- -- Agnelo de Jesus. _ Oi! Você quer um iG-mail gratuito? Então clique aqui: http://registro.ig.com.br/censo/igmail -- LISTA SOUJAVA --- - http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu
Re: [java-list] código obscuro!!
Fiz os testes em: -Borland C++ 5.02, Windows NT 4.0 SP6, Pentium III e o resultado foi 1 (um) para o programa .c; -compilador gcc do Linux Red Hat 6.2 o resultado também foi 1 (um); -JVM 1.4 Windows NT 4.0 SP 6, resultado 0 (zero); At 16:57 05/03/2002, you wrote: Caramba... esse troco estah gerando um monte de conversa mesmo. Resolvi dar uma testada nesse negocio. Testei nos seguintes compiladores C/C++ Compilador C/C++ padrao do Sistema HP (Unix) gcc compiler no Linux (RedHat 7.2) rodando em PC Intel Compilador C/C++ padrao do Sistema Cray (Cray T-3E) E as seguintes JVM's JDK 1.1.8 Sun JDK 1.2.2 Sun JDK 1.3.1_02 Sun JDK 1.4 Sun todos rodando em PC's Intel com Windows NT 4.0 SP 6 JDK 1.3.0 instalada num HP (Unix) Nao testei com JDK 1.0 porque nao tenho aqui no escritorio. Os testes foram os seguintes: para Java class PlusPlusADireitaRetornaZero public static void main (String[] a) { int i = 0; i = i++; System.out.println(i); } Para C #include stdio.h int main () int i = 0; i = i++; fprintf(%i \n, i); Para C++ (que eh a mesma coisa, no caso, mas... ) #include iostream int main () int i = 0; i = i++; cout i '\n'; Resultados: zero, sempre zero, jamais algo diferente de zero. Em todas as plataformas/linguagens. Ainda estou para ver uma situacao que retorne UM. Me digam qual o caso que retorna 1, mas mandem completo: Compilador, versao do compilador, SO, versao do SO, SP aplicados (se algum), plataforma de hardware usada (PC Intel, PC AMD, HP, ...). Silvio On Mon, 04 March 2002, Carlos Villela wrote Ate' agora, eu so vi programas deste tipo implementados em C/C++ resultarem em 1 (nos compiladores gcc e turboc-4.5) e implementacoes em Java retornarem 0 (nas jdks 1.3 e 1.4 da sun, jdk 1.3 da ibm). Em quais compiladores/JVMs vc viu este comportamento mudar? Sven van ´t Veer wrote: Não tem, até diversas compiladores C++ tem comportamento diferente, e parece diversas JVM também tem comportamento diferente. csuco wrote: o codigo em C ou C++... int main() { int i = 0; i = i++; fprintf (stdou,i = %ld,i); } teria exatamente o mesmo comportamento! Clebert -- Mensagem original --- De : Agnelo de Jesus [EMAIL PROTECTED] Para: [EMAIL PROTECTED] Cc : Data: Wed, 27 Feb 2002 09:05:45 -0300 Assunto : Re: [java-list] código obscuro!! Caro Cristiano, Quando você utiliza o incremento à direita do número,(i++), você primeiro retorna o número e depois soma 1. Para você fazer aquilo que pretendia,(não existe necessidade), você deveria utilizar o incremento à esquerda do número (++i). Isto vale também para a linguagem C++, verifique se o que você afirmou realmente ocorre, o que seria verdadeiramente obscuro :). Espero ter ajudado []s, Agnelo de Jesus. { int i = 0; i = i++; System.out.println(i); } Em 26 Feb 2002, [EMAIL PROTECTED] escreveu: Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Abraços, CristianoBS -- LISTA SOUJAVA -- -- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu- SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para java-list- [EMAIL PROTECTED] --- -- -- Agnelo de Jesus. _ Oi! Você quer um iG-mail gratuito? Então clique aqui: http://registro.ig.com.br/censo/igmail -- LISTA SOUJAVA --- - http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu- SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para java-list- [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED
Re: [java-list] código obscuro!!
eu sei como resolver o problema de achar o resultado 1. isso estah claro. o que estou falando eh que achar 0 eh o correto nesse caso. exatamente como estah escrito. se trocar de variavel nao existe ambiguidade, e consequentemente nao existe necessidade de teste algum. o que estamos falando nao eh de como obter 1, o que eh trivial, mas de que em algumas situacoes o codigo i = 0; i = i++ poderia retornar algo que nao zero, o que nao poderia acontecer. - Original Message - From: Luiz Reginaldo [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Monday, March 11, 2002 4:12 AM Subject: Re: [java-list] código obscuro!! Silvio, Troque a atribuição i= i++ por algo como a= i++. Não utilize a mesma variável na atribuição. - Original Message - From: Silvio L. DeMorais [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Tuesday, March 05, 2002 4:57 PM Subject: Re: [java-list] código obscuro!! Caramba... esse troco estah gerando um monte de conversa mesmo. Resolvi dar uma testada nesse negocio. Testei nos seguintes compiladores C/C++ Compilador C/C++ padrao do Sistema HP (Unix) gcc compiler no Linux (RedHat 7.2) rodando em PC Intel Compilador C/C++ padrao do Sistema Cray (Cray T-3E) E as seguintes JVM's JDK 1.1.8 Sun JDK 1.2.2 Sun JDK 1.3.1_02 Sun JDK 1.4 Sun todos rodando em PC's Intel com Windows NT 4.0 SP 6 JDK 1.3.0 instalada num HP (Unix) Nao testei com JDK 1.0 porque nao tenho aqui no escritorio. Os testes foram os seguintes: para Java class PlusPlusADireitaRetornaZero public static void main (String[] a) { int i = 0; i = i++; System.out.println(i); } Para C #include stdio.h int main () int i = 0; i = i++; fprintf(%i \n, i); Para C++ (que eh a mesma coisa, no caso, mas... ) #include iostream int main () int i = 0; i = i++; cout i '\n'; Resultados: zero, sempre zero, jamais algo diferente de zero. Em todas as plataformas/linguagens. Ainda estou para ver uma situacao que retorne UM. Me digam qual o caso que retorna 1, mas mandem completo: Compilador, versao do compilador, SO, versao do SO, SP aplicados (se algum), plataforma de hardware usada (PC Intel, PC AMD, HP, ...). Silvio On Mon, 04 March 2002, Carlos Villela wrote Ate' agora, eu so vi programas deste tipo implementados em C/C++ resultarem em 1 (nos compiladores gcc e turboc-4.5) e implementacoes em Java retornarem 0 (nas jdks 1.3 e 1.4 da sun, jdk 1.3 da ibm). Em quais compiladores/JVMs vc viu este comportamento mudar? Sven van ´t Veer wrote: Não tem, até diversas compiladores C++ tem comportamento diferente, e parece diversas JVM também tem comportamento diferente. csuco wrote: o codigo em C ou C++... int main() { int i = 0; i = i++; fprintf (stdou,i = %ld,i); } teria exatamente o mesmo comportamento! Clebert -- Mensagem original --- De : Agnelo de Jesus [EMAIL PROTECTED] Para: [EMAIL PROTECTED] Cc : Data: Wed, 27 Feb 2002 09:05:45 -0300 Assunto : Re: [java-list] código obscuro!! Caro Cristiano, Quando você utiliza o incremento à direita do número,(i++), você primeiro retorna o número e depois soma 1. Para você fazer aquilo que pretendia,(não existe necessidade), você deveria utilizar o incremento à esquerda do número (++i). Isto vale também para a linguagem C++, verifique se o que você afirmou realmente ocorre, o que seria verdadeiramente obscuro :). Espero ter ajudado []s, Agnelo de Jesus. { int i = 0; i = i++; System.out.println(i); } Em 26 Feb 2002, [EMAIL PROTECTED] escreveu: Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Abraços, CristianoBS -- LISTA SOUJAVA -- -- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu- SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para java-list- [EMAIL PROTECTED] --- -- -- Agnelo de Jesus. _ Oi! Você quer um iG-mail gratuito? Então clique aqui: http://registro.ig.com.br/censo/igmail -- LISTA SOUJAVA
Re: [java-list] código obscuro!!
qual versao do c++ builder Sven? eu testei num amd 800mhz, rodando windows xp e cbuilder versao 4 e obtive o resultado 0, como esperado. - Original Message - From: Sven van ´t Veer [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Tuesday, March 05, 2002 4:01 AM Subject: Re: [java-list] código obscuro!! cc UNIX C compiler, ( result i = 0) CC UNIX C++ compiler, ( result i = 0 ) g++ GNU C++ compiler, ( result i = 1 ) c++ CBuilder5 compiler (result = 1) javac java compiler ( result i = 0) e alguem falou sobre java retiornar 1, mas não sei quem foi e qual JVM usado. Carlos Villela wrote: Ate' agora, eu so vi programas deste tipo implementados em C/C++ resultarem em 1 (nos compiladores gcc e turboc-4.5) e implementacoes em Java retornarem 0 (nas jdks 1.3 e 1.4 da sun, jdk 1.3 da ibm). Em quais compiladores/JVMs vc viu este comportamento mudar? Sven van ´t Veer wrote: Não tem, até diversas compiladores C++ tem comportamento diferente, e parece diversas JVM também tem comportamento diferente. csuco wrote: o codigo em C ou C++... int main() { int i = 0; i = i++; fprintf (stdou,i = %ld,i); } teria exatamente o mesmo comportamento! Clebert -- Mensagem original --- De : Agnelo de Jesus [EMAIL PROTECTED] Para: [EMAIL PROTECTED] Cc : Data: Wed, 27 Feb 2002 09:05:45 -0300 Assunto : Re: [java-list] código obscuro!! Caro Cristiano, Quando você utiliza o incremento à direita do número,(i++), você primeiro retorna o número e depois soma 1. Para você fazer aquilo que pretendia,(não existe necessidade), você deveria utilizar o incremento à esquerda do número (++i). Isto vale também para a linguagem C++, verifique se o que você afirmou realmente ocorre, o que seria verdadeiramente obscuro :). Espero ter ajudado []s, Agnelo de Jesus. { int i = 0; i = i++; System.out.println(i); } Em 26 Feb 2002, [EMAIL PROTECTED] escreveu: Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Abraços, CristianoBS -- LISTA SOUJAVA -- -- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu- SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para java-list- [EMAIL PROTECTED] --- -- -- Agnelo de Jesus. _ Oi! Você quer um iG-mail gratuito? Então clique aqui: http://registro.ig.com.br/censo/igmail -- LISTA SOUJAVA --- - http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu- SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para java-list- [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - br -- 'You guys (at Microsoft) still don't get it,' because it's sort of Java with reliability, productivity and security deleted. James Gosling -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- 'You guys (at Microsoft) still don't get it,' because it's sort of Java with reliability, productivity and security deleted. James Gosling -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http
Re: [java-list] código obscuro!!
Silvio, Troque a atribuição i= i++ por algo como a= i++. Não utilize a mesma variável na atribuição. - Original Message - From: Silvio L. DeMorais [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Tuesday, March 05, 2002 4:57 PM Subject: Re: [java-list] código obscuro!! Caramba... esse troco estah gerando um monte de conversa mesmo. Resolvi dar uma testada nesse negocio. Testei nos seguintes compiladores C/C++ Compilador C/C++ padrao do Sistema HP (Unix) gcc compiler no Linux (RedHat 7.2) rodando em PC Intel Compilador C/C++ padrao do Sistema Cray (Cray T-3E) E as seguintes JVM's JDK 1.1.8 Sun JDK 1.2.2 Sun JDK 1.3.1_02 Sun JDK 1.4 Sun todos rodando em PC's Intel com Windows NT 4.0 SP 6 JDK 1.3.0 instalada num HP (Unix) Nao testei com JDK 1.0 porque nao tenho aqui no escritorio. Os testes foram os seguintes: para Java class PlusPlusADireitaRetornaZero public static void main (String[] a) { int i = 0; i = i++; System.out.println(i); } Para C #include stdio.h int main () int i = 0; i = i++; fprintf(%i \n, i); Para C++ (que eh a mesma coisa, no caso, mas... ) #include iostream int main () int i = 0; i = i++; cout i '\n'; Resultados: zero, sempre zero, jamais algo diferente de zero. Em todas as plataformas/linguagens. Ainda estou para ver uma situacao que retorne UM. Me digam qual o caso que retorna 1, mas mandem completo: Compilador, versao do compilador, SO, versao do SO, SP aplicados (se algum), plataforma de hardware usada (PC Intel, PC AMD, HP, ...). Silvio On Mon, 04 March 2002, Carlos Villela wrote Ate' agora, eu so vi programas deste tipo implementados em C/C++ resultarem em 1 (nos compiladores gcc e turboc-4.5) e implementacoes em Java retornarem 0 (nas jdks 1.3 e 1.4 da sun, jdk 1.3 da ibm). Em quais compiladores/JVMs vc viu este comportamento mudar? Sven van ´t Veer wrote: Não tem, até diversas compiladores C++ tem comportamento diferente, e parece diversas JVM também tem comportamento diferente. csuco wrote: o codigo em C ou C++... int main() { int i = 0; i = i++; fprintf (stdou,i = %ld,i); } teria exatamente o mesmo comportamento! Clebert -- Mensagem original --- De : Agnelo de Jesus [EMAIL PROTECTED] Para: [EMAIL PROTECTED] Cc : Data: Wed, 27 Feb 2002 09:05:45 -0300 Assunto : Re: [java-list] código obscuro!! Caro Cristiano, Quando você utiliza o incremento à direita do número,(i++), você primeiro retorna o número e depois soma 1. Para você fazer aquilo que pretendia,(não existe necessidade), você deveria utilizar o incremento à esquerda do número (++i). Isto vale também para a linguagem C++, verifique se o que você afirmou realmente ocorre, o que seria verdadeiramente obscuro :). Espero ter ajudado []s, Agnelo de Jesus. { int i = 0; i = i++; System.out.println(i); } Em 26 Feb 2002, [EMAIL PROTECTED] escreveu: Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Abraços, CristianoBS -- LISTA SOUJAVA -- -- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu- SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para java-list- [EMAIL PROTECTED] --- -- -- Agnelo de Jesus. _ Oi! Você quer um iG-mail gratuito? Então clique aqui: http://registro.ig.com.br/censo/igmail -- LISTA SOUJAVA --- - http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu- SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para java-list- [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie
Re: [java-list] código obscuro!!
cc UNIX C compiler, ( result i = 0) CC UNIX C++ compiler, ( result i = 0 ) g++ GNU C++ compiler, ( result i = 1 ) c++ CBuilder5 compiler (result = 1) javac java compiler ( result i = 0) e alguem falou sobre java retiornar 1, mas não sei quem foi e qual JVM usado. Carlos Villela wrote: Ate' agora, eu so vi programas deste tipo implementados em C/C++ resultarem em 1 (nos compiladores gcc e turboc-4.5) e implementacoes em Java retornarem 0 (nas jdks 1.3 e 1.4 da sun, jdk 1.3 da ibm). Em quais compiladores/JVMs vc viu este comportamento mudar? Sven van ´t Veer wrote: Não tem, até diversas compiladores C++ tem comportamento diferente, e parece diversas JVM também tem comportamento diferente. csuco wrote: o codigo em C ou C++... int main() { int i = 0; i = i++; fprintf (stdou,i = %ld,i); } teria exatamente o mesmo comportamento! Clebert -- Mensagem original --- De : Agnelo de Jesus [EMAIL PROTECTED] Para: [EMAIL PROTECTED] Cc : Data: Wed, 27 Feb 2002 09:05:45 -0300 Assunto : Re: [java-list] código obscuro!! Caro Cristiano, Quando você utiliza o incremento à direita do número,(i++), você primeiro retorna o número e depois soma 1. Para você fazer aquilo que pretendia,(não existe necessidade), você deveria utilizar o incremento à esquerda do número (++i). Isto vale também para a linguagem C++, verifique se o que você afirmou realmente ocorre, o que seria verdadeiramente obscuro :). Espero ter ajudado []s, Agnelo de Jesus. { int i = 0; i = i++; System.out.println(i); } Em 26 Feb 2002, [EMAIL PROTECTED] escreveu: Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Abraços, CristianoBS -- LISTA SOUJAVA -- -- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu- SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para java-list- [EMAIL PROTECTED] --- -- -- Agnelo de Jesus. _ Oi! Você quer um iG-mail gratuito? Então clique aqui: http://registro.ig.com.br/censo/igmail -- LISTA SOUJAVA --- - http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu- SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para java-list- [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - br -- 'You guys (at Microsoft) still don't get it,' because it's sort of Java with reliability, productivity and security deleted. James Gosling -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- 'You guys (at Microsoft) still don't get it,' because it's sort of Java with reliability, productivity and security deleted. James Gosling -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] código obscuro!!
Está discussão deveria ter acabado já... i++ é o mesmo que... i = i + 1 então pq fazer... i = i = i + 1 ??? = ._. | ||| r_linux ||| | | ||--- Slackware 8.0 - Kernel 2.4.17--|| | | ||- BlackBox 0.61.1 - XFree86 4.1.0--|| | | ||--- [EMAIL PROTECTED] -- www.slackware.na-web.net--|| | | ||- irc.brasnet.org -- #slackware ---|| | |--EOF--| __ Do You Yahoo!? Try FREE Yahoo! Mail - the world's greatest free email! http://mail.yahoo.com/ -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] código obscuro!!
Caramba... esse troco estah gerando um monte de conversa mesmo. Resolvi dar uma testada nesse negocio. Testei nos seguintes compiladores C/C++ Compilador C/C++ padrao do Sistema HP (Unix) gcc compiler no Linux (RedHat 7.2) rodando em PC Intel Compilador C/C++ padrao do Sistema Cray (Cray T-3E) E as seguintes JVM's JDK 1.1.8 Sun JDK 1.2.2 Sun JDK 1.3.1_02 Sun JDK 1.4 Sun todos rodando em PC's Intel com Windows NT 4.0 SP 6 JDK 1.3.0 instalada num HP (Unix) Nao testei com JDK 1.0 porque nao tenho aqui no escritorio. Os testes foram os seguintes: para Java class PlusPlusADireitaRetornaZero public static void main (String[] a) { int i = 0; i = i++; System.out.println(i); } Para C #include stdio.h int main () int i = 0; i = i++; fprintf(%i \n, i); Para C++ (que eh a mesma coisa, no caso, mas... ) #include iostream int main () int i = 0; i = i++; cout i '\n'; Resultados: zero, sempre zero, jamais algo diferente de zero. Em todas as plataformas/linguagens. Ainda estou para ver uma situacao que retorne UM. Me digam qual o caso que retorna 1, mas mandem completo: Compilador, versao do compilador, SO, versao do SO, SP aplicados (se algum), plataforma de hardware usada (PC Intel, PC AMD, HP, ...). Silvio On Mon, 04 March 2002, Carlos Villela wrote Ate' agora, eu so vi programas deste tipo implementados em C/C++ resultarem em 1 (nos compiladores gcc e turboc-4.5) e implementacoes em Java retornarem 0 (nas jdks 1.3 e 1.4 da sun, jdk 1.3 da ibm). Em quais compiladores/JVMs vc viu este comportamento mudar? Sven van ´t Veer wrote: Não tem, até diversas compiladores C++ tem comportamento diferente, e parece diversas JVM também tem comportamento diferente. csuco wrote: o codigo em C ou C++... int main() { int i = 0; i = i++; fprintf (stdou,i = %ld,i); } teria exatamente o mesmo comportamento! Clebert -- Mensagem original --- De : Agnelo de Jesus [EMAIL PROTECTED] Para: [EMAIL PROTECTED] Cc : Data: Wed, 27 Feb 2002 09:05:45 -0300 Assunto : Re: [java-list] código obscuro!! Caro Cristiano, Quando você utiliza o incremento à direita do número,(i++), você primeiro retorna o número e depois soma 1. Para você fazer aquilo que pretendia,(não existe necessidade), você deveria utilizar o incremento à esquerda do número (++i). Isto vale também para a linguagem C++, verifique se o que você afirmou realmente ocorre, o que seria verdadeiramente obscuro :). Espero ter ajudado []s, Agnelo de Jesus. { int i = 0; i = i++; System.out.println(i); } Em 26 Feb 2002, [EMAIL PROTECTED] escreveu: Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Abraços, CristianoBS -- LISTA SOUJAVA -- -- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu- SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para java-list- [EMAIL PROTECTED] --- -- -- Agnelo de Jesus. _ Oi! Você quer um iG-mail gratuito? Então clique aqui: http://registro.ig.com.br/censo/igmail -- LISTA SOUJAVA --- - http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu- SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para java-list- [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - br -- 'You guys (at Microsoft) still don't get it,' because it's sort of Java with reliability, productivity and security deleted. James Gosling -- LISTA SOUJAVA http://www.soujava.org.br
Re: [java-list] código obscuro!!
Ola Lista, Para entender o que acontece precisamos apenas decompilar o .class. Ao analisarmos o assembly que a maquina virtual executa tudo fica claro.. int i = 0; // iconst_0 - joga o int 0 no stack // istore_1 - pega o valor no stack e grava na variavel local 1 i = i++; // iload_1- pega o valor da variavel local 1 e a joga no stack // iinc 1 1 - incrementa a variavel local 1 em 1 unidade // istore_1 - pega o valor no stack e grava na variavel local 1 logo a instrucao iinc 1 1 nao tem nenhum efeito pratico como era de se esperar. Logo idependente do compilador ou da JVM obteremos o mesmo resultado pois o compilador e a JVM devem seguir as especificacoes da Sun. T+ Luciano Ribas Desenv. Sistemas [EMAIL PROTECTED] -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: Re: [java-list] código obscuro!!
No tem, at diversas compiladores C++ tem comportamento diferente, e parece diversas JVM tambm tem comportamento diferente. csuco wrote: GS76CJ$[EMAIL PROTECTED]"> o codigo em C ou C++...int main() { int i = 0; i = i++; fprintf (stdou,"i = %ld",i);}teria exatamente o mesmo comportamento!Clebert -- Mensagem original ---De : Agnelo de Jesus [EMAIL PROTECTED]Para: [EMAIL PROTECTED]Cc : Data: Wed, 27 Feb 2002 09:05:45 -0300Assunto : Re: [java-list] cdigo obscuro!!Caro Cristiano, Quando voc utiliza o incremento direita do nmero,(i++), voc primeiro retorna o nmero e depois soma 1. Para voc fazer aquilo que pretendia,(no existe necessidade), voc deveria utilizar o incremento esquerda do nmero (++i). Isto vale tambm para a linguagem C++, verifique se o que voc afirmou realmente ocorre, o que seria verdadeiramente obscuro :). Espero ter ajudado []s, Agnelo de Jesus. { int i = 0; i = i++; System.out.println(i); } Em 26 Feb 2002, [EMAIL PROTECTED] escreveu: Oi lista, Algum pode explicar porque a seguinte implementao retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } No seria mais 'lgico' retornar 1, como em C++ ? Abraos, CristianoBS -- LISTA SOUJAVA -- -- http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu- SP dvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para java-list- [EMAIL PROTECTED] --- -- -- Agnelo de Jesus. _Oi! Voc quer um iG-mail gratuito?Ento clique aqui: http://registro.ig.com.br/censo/igmail-- LISTA SOUJAVA --- - http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu- SP dvidas mais comuns: http://www.soujava.org.br/faq.htmregras da lista: http://www.soujava.org.br/regras.htmhistorico: http://www.mail-archive.com/java-list%40soujava.org.brpara sair da lista: envie email para java-list- [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas mais comuns: http://www.soujava.org.br/faq.htmregras da lista: http://www.soujava.org.br/regras.htmhistorico: http://www.mail-archive.com/java-list%40soujava.org.brpara sair da lista: envie email para [EMAIL PROTECTED] -< br> -- "'You guys (at Microsoft) still don't get it,' because it's sort of Java with reliability, productivity and security deleted." James Gosling
Re: [java-list] código obscuro!!
Ate' agora, eu so vi programas deste tipo implementados em C/C++ resultarem em 1 (nos compiladores gcc e turboc-4.5) e implementacoes em Java retornarem 0 (nas jdks 1.3 e 1.4 da sun, jdk 1.3 da ibm). Em quais compiladores/JVMs vc viu este comportamento mudar? Sven van ´t Veer wrote: Não tem, até diversas compiladores C++ tem comportamento diferente, e parece diversas JVM também tem comportamento diferente. csuco wrote: o codigo em C ou C++... int main() { int i = 0; i = i++; fprintf (stdou,i = %ld,i); } teria exatamente o mesmo comportamento! Clebert -- Mensagem original --- De : Agnelo de Jesus [EMAIL PROTECTED] Para: [EMAIL PROTECTED] Cc : Data: Wed, 27 Feb 2002 09:05:45 -0300 Assunto : Re: [java-list] código obscuro!! Caro Cristiano, Quando você utiliza o incremento à direita do número,(i++), você primeiro retorna o número e depois soma 1. Para você fazer aquilo que pretendia,(não existe necessidade), você deveria utilizar o incremento à esquerda do número (++i). Isto vale também para a linguagem C++, verifique se o que você afirmou realmente ocorre, o que seria verdadeiramente obscuro :). Espero ter ajudado []s, Agnelo de Jesus. { int i = 0; i = i++; System.out.println(i); } Em 26 Feb 2002, [EMAIL PROTECTED] escreveu: Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Abraços, CristianoBS -- LISTA SOUJAVA -- -- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu- SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para java-list- [EMAIL PROTECTED] --- -- -- Agnelo de Jesus. _ Oi! Você quer um iG-mail gratuito? Então clique aqui: http://registro.ig.com.br/censo/igmail -- LISTA SOUJAVA --- - http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu- SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para java-list- [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - br -- 'You guys (at Microsoft) still don't get it,' because it's sort of Java with reliability, productivity and security deleted. James Gosling -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: Re: [java-list] código obscuro!!
pois eh, mas ele atribui i = i e depois faz i = i + 1 porm o codigo deveria fazer a mesma coisa que int i = 0; i = i; i = i + 1; System.out.println(i); porm a saida deveria ser 1 e no 0, ou seja igual a saida de C++ com a mesma seo de cdigo. Sandro Brando wrote: 004301c1bf77$c462fe80$[EMAIL PROTECTED]"> Isso porque quando vc usa o i++ na atribuio, ele executa primeiro aatribuio para depois incrementar a varivel. Para a soluo do problemautilize ++i, ou seja: i = ++i;Sandro- Original Message -From: "Cristiano Bianchi Sanchez" [EMAIL PROTECTED]To: [EMAIL PROTECTED]Sent: Tuesday, February 26, 2002 11:58 AMSubject: [java-list] cdigo obscuro!! Oi lista, Algum pode explicar porque a seguinte implementao retorna 0 (zero)? {int i = 0;i = i++;System.out.println(i); } No seria mais 'lgico' retornar 1, como em C++ ?Abraos,CristianoBS-- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SPdvidas mais comuns: http://www.soujava.org.br/faq.htmregras da lista: http://www.soujava.org.br/regras.htmhistorico: http://www.mail-archive.com/java-list%40sou java.org.brpara sair da lista: envie email para [EMAIL PROTECTED]- -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas mais comuns: http://www.soujava.org.br/faq.htmregras da lista: http://www.soujava.org.br/regras.htmhistorico: http://www.mail-archive.com/java-list%40soujava.org.brpara sair da lista: envie email para [EMAIL PROTECTED] - -- "'You guys (at Microsoft) still don't get it,' because it's sort of Java with reliability, productivity and security deleted." James Gosling
Re: [java-list] código obscuro!!
Eu verifiquei e em C / C++ realmente sai 1 em vez de 0 que, na minha opinio certo. Neste cdigo ele no est atribuindo i++ a j mas a i mesmo ou seja, i = i; i += 1; isso seria o certo pois mesmo sendo cdigo ridiculo, o que esta escrito i = 0 i = i++ que igual a i = 0 i = 0 i += 1 pois a incrementao acontece apos a utilizao do valor atual ( o segundo i = 0) Agnelo de Jesus wrote: Caro Cristiano, Quando voc utiliza o incremento direita do nmero,(i++), voc primeiro retorna o nmero e depois soma 1. Para voc fazer aquilo que pretendia,(no existe necessidade), voc deveria utilizar o incremento esquerda do nmero (++i). Isto vale tambm para a linguagem C++, verifique se o que voc afirmou realmente ocorre, o que seria verdadeiramente obscuro :). Espero ter ajudado []s, Agnelo de Jesus. { int i = 0; i = i++; System.out.println(i); } Em 26 Feb 2002, [EMAIL PROTECTED] escreveu: Oi lista, Algum pode explicar porque a seguinte implementao retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } No seria mais 'lgico' retornar 1, como em C++ ? Abraos, CristianoBS -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org .br para sair da lista: envie email para [EMAIL PROTECTED] - -- Agnelo de Jesus. _Oi! Voc quer um iG-mail gratuito?Ento clique aqui: http://registro.ig.com.br/censo/igmail-- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas mais comuns: http://www.soujava.org.br/faq.htmregras da lista: http://www.soujava.org.br/regras.htmhistorico: http://www.mail-archive.com/java-list%40soujava.org.brpara sair da lista: envie email para [EMAIL PROTECTED] - -- "'You guys (at Microsoft) still don't get it,' because it's sort of Java with reliability, productivity and security deleted." James Gosling
Re: [java-list] código obscuro!!
o codigo em C ou C++... int main() { int i = 0; i = i++; fprintf (stdou,i = %ld,i); } teria exatamente o mesmo comportamento! Clebert -- Mensagem original --- De : Agnelo de Jesus [EMAIL PROTECTED] Para: [EMAIL PROTECTED] Cc : Data: Wed, 27 Feb 2002 09:05:45 -0300 Assunto : Re: [java-list] código obscuro!! Caro Cristiano, Quando você utiliza o incremento à direita do número,(i++), você primeiro retorna o número e depois soma 1. Para você fazer aquilo que pretendia,(não existe necessidade), você deveria utilizar o incremento à esquerda do número (++i). Isto vale também para a linguagem C++, verifique se o que você afirmou realmente ocorre, o que seria verdadeiramente obscuro :). Espero ter ajudado []s, Agnelo de Jesus. { int i = 0; i = i++; System.out.println(i); } Em 26 Feb 2002, [EMAIL PROTECTED] escreveu: Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Abraços, CristianoBS -- LISTA SOUJAVA -- -- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu- SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para java-list- [EMAIL PROTECTED] --- -- -- Agnelo de Jesus. _ Oi! Você quer um iG-mail gratuito? Então clique aqui: http://registro.ig.com.br/censo/igmail -- LISTA SOUJAVA --- - http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu- SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para java-list- [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: RES: [java-list] código obscuro!!
O seu extrato foi bom mas, não está completa: At run time, if evaluation of the operand expression completes abruptly, then the postfix increment expression completes abruptly for the same reason and no incrementation occurs. Otherwise, the value 1 is added to the value of the variable and the sum is stored back into the variable. Before the addition, binary numeric promotion (§5.6.2) is performed on the value 1 and the value of the variable. If necessary, the sum is narrowed by a narrowing primitive conversion (§5.1.3) to the type of the variable before it is stored. The value of the postfix increment expression is the value of the variable before the new value is stored. Veja bem, o que deve occorer é que i é atribuido o valor da expressão i++, que é naquele momento 0 e é gravado no variavel, depois o valor do variavel é incrementada com o valor de um e este resultdao é gravado no variavel. senão, isso deveria imprimir 0 tb: int i, j; i = j = 0; j = i++; System.out.println(i); aqui o J é 0 mas o i é um. no caso acima há algo diferente pois a attribuição do i = i é efeituada, aparentamente apos the value 1 is added to the value of the variable and the sum is stored back into the variable pois o valor 1 é sobrescrito com 0. Bráulio Consani Moura wrote: Caro amigo, neste caso a operação é pos-fixada, ou seja, primeiro se atribui o valor antes do incremento da variavel e entao este ocorre. Este caso é especial, pois se utiliza a mesma variavel. Note que o proprio i++ é uma atribuicao de i = i + 1. a linha correta seria somente i++; ou i+=1; para que o resultado fosse 1. No seu caso o valor de i permanece como o valor antes do incremento. Como na especificacao: ...The value of the postfix increment expression is the value of the variable before the new value is stored... Resumo: O efeito do codigo i = i++; é o mesmo efeito que o do codigo i = i e nao representa efeito igual ao que foi exposto que seria: i = i; i++; (este efeito nao ocorre para o codigo apresentado) Espero ter ajudado consani -Mensagem original- De: Cristiano Bianchi Sanchez [mailto:[EMAIL PROTECTED]] Enviada em: terça-feira, 26 de fevereiro de 2002 11:59 Para: [EMAIL PROTECTED] Assunto: [java-list] código obscuro!! Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Abraços, CristianoBS -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- 'You guys (at Microsoft) still don't get it,' because it's sort of Java with reliability, productivity and security deleted. James Gosling -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] código obscuro!!
Oi, Nao consigo entender como poderia dar 1 em C++... Primeiro é feito retornado o valor ( 0 ), efetuado o incremento ( i fica com 1) e depois que é e feito o = (i volta a valer 0)... t+ .: marcelo alves :. | | Oi lista, | |Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? | |{ | int i = 0; | i = i++; | System.out.println(i); |} | |Não seria mais 'lógico' retornar 1, como em C++ ? | | Abraços, | | CristianoBS | -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: Re: [java-list] código obscuro!!
deve ser claro que o cdigo redundante, a questo se o resultado o esperado pela especificao da linguagem Java sim ou no. Na minha opinio no uma vez que i = i++ pode ser escrito como i = i; i++;, que no caso retornaria 1 em vez de 0. Giuliano de Aquino wrote: 00da01c1bf94$e917ca40$0b01a8c0@KNSDOMAIN"> i = ++i;//retornaria 1 mas muito redundante, utilize i++; ou ++i; apenas...- Original Message -From: "Cristiano Bianchi Sanchez" [EMAIL PROTECTED]To: [EMAIL PROTECTED]Sent: Tuesday, February 26, 2002 11:58 AMSubject: [java-list] cdigo obscuro!! Oi lista, Algum pode explicar porque a seguinte implementao retorna 0 (zero)? {int i = 0;i = i++;System.out.println(i); } No seria mais 'lgico' retornar 1, como em C++ ?Abraos,CristianoBS-- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SPdvidas mais comuns: http://www.soujava.org.br/faq.htmregras da lista: http://www.soujava.org.br/regras.htmhistorico: http://www.mail-archive.com/java-list%40sou java.org.brpara sair da lista: envie email para [EMAIL PROTECTED]- -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas mais comuns: http://www.soujava.org.br/faq.htmregras da lista: http://www.soujava.org.br/regras.htmhistorico: http://www.mail-archive.com/java-list%40soujava.org.brpara sair da lista: envie email para [EMAIL PROTECTED] - -- "'You guys (at Microsoft) still don't get it,' because it's sort of Java with reliability, productivity and security deleted." James Gosling
Re: [java-list] código obscuro!!
Para mim isto é tudo babaquice. O i++ é um operador sobrecarregado herdado do c++ que significa i=i+1, então para que i=i++ ou i=++i, use somente i++ que dá na mesma! []'s Sparc - Original Message - From: Pedro Herrera To: [EMAIL PROTECTED] Sent: Wednesday, February 27, 2002 10:40 AM Subject: RES: [java-list] código obscuro!! Por que vc nao faz i = ++i ao inves de i = i++ ? assim ele atribui depois e o resultado sera 1 como vc esperava Pedro Herrera Sun Certified Programmer for Java 2 Plataform From: "Paulo Bruno Contopoulos" <[EMAIL PROTECTED]> Reply-To: [EMAIL PROTECTED] To: <[EMAIL PROTECTED]> Subject: RES: [java-list] código obscuro!! Date: Wed, 27 Feb 2002 01:23:35 -0300 -Mensagem original- De: Cristiano Bianchi Sanchez [mailto:[EMAIL PROTECTED]] Enviada em: terça-feira, 26 de fevereiro de 2002 11:59 Para: [EMAIL PROTECTED] Assunto: [java-list] código obscuro!! Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Não, porque quando você coloca i++, ele atribui antes de adicionar. Aliás, porque não fazer i++ direto, ou você só estava fazendo um teste? []'s, Paulo Bruno Contopoulos -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - Associe-se ao maior serviço de e-mail do mundo através do MSN Hotmail. http://www.hotmail.com/BR-- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] código obscuro!!
Esse codigo vai resultar em '0' (zero) tanto em Java quanto em C/C++. O problema aqui eh de qual operacao esta acontecendo. Veja o que acontece com a variavel 'i' nesse seu programa: { 1 int i = 0; 2 i = i++; 3 System.out.println(i); } Na linha 1 i recebe o valor 0 (zero). Na linha 2 acontece uma atribuicao, e a parte a direita do operador e calculada. Como o operador ++ esta a DIREITA da variavel, o valor da expressao eh calculado com o valor inicial da variavel, 0 (zero) nesse caso. O operador ++ eh entao executado, e o valor de i vai para 1 (um). Apos isso, a operacao de atribuicao ira acontecer, e o valor da expressao calculada eh 0 (sero), e esse valor eh novamente atribuido a variavel 'i', fazendo com que chegue a linha 3 zerada! Ficou claro? E esse comportamento eh o mesmo em C, C++ ou Java, que eu saiba. Silvio On Tue, 26 February 2002, Cristiano Bianchi Sanchez wrote Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Abraços, CristianoBS -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] código obscuro!!
Em c++, se vc fizer exatamente dessa forma, vai obter o mesmo resultado, é só testar para ver (testei aqui no gcc). Se você quiser que imprima 1, vai ter que fazer i = ++i tanto em java quanto em c++. Resumindo, i = i++ é atribui e incrementa. i = ++i é incrementa e atribui. Atenciosamente, Christian S. Gravatá Programador Certificado Sun para Plataforma Java 2 Desenvolvedor de Componentes Web Certificado Sun para Plataforma Java 2 Enterprise Edition - Original Message - From: Cristiano Bianchi Sanchez [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Tuesday, February 26, 2002 10:58 AM Subject: [java-list] código obscuro!! Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Abraços, CristianoBS -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: RES: [java-list] código obscuro!!
Galera, Chega desse negocio de CODIGO OBSCURO NAO EXISTE i=i++ isso eh redundancia em qualquer linguagem!! (Vc esta descendo para baixo OU PIOR entrando para fora) Eh o mesmo que fazer x = 5; if (x==5) { ...}; x += 0 * (x - x); if (!(x 0) (x==0)) {..// ARGH Vamos parar com essa babaquice? Isso nao tem nada a ver com Java! []'s Julio. -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: Re: [java-list] código obscuro!!
Qual a maquina virtual que vc usa?? Valdenia Eduardo wrote: 006101c1bf9e$5964c9c0$c8c0a8c0@oemcomputer"> vcs me desculpem, mas eu compilei e obtive 1 e no zero. verdade que quando coloco i++ o java s avalia depois, mas depois deque??? (depois de avaliar o resto da expresso, que neste caso termina noponto e vrgula). Quando chega na linha seguinte j deve estar como 1.Eduardo- Original Message -From: Renan Milfont [EMAIL PROTECTED]To: [EMAIL PROTECTED]Sent: Wednesday, February 13, 2002 8:36 AMSubject: Re: [java-list] cdigo obscuro!! Primeiro ele atribui o valor de i recebendo 0 e s depois ele faz a somaentedeu ?Para dar um, o cdigo deveria ser assim. {int i = 0;i = ++i;System.out.println(i); } - Original Message -From: "Cristiano Bianchi Sanchez" [EMAIL PROTECTED]To: [EMAIL PROTECTED]Sent: Tuesday, February 26, 2002 11:58 AMSubject: [java-list] cdigo obscuro!! Oi lista, Algum pode explicar porque a seguinte implementao retorna 0 (zero)? {int i = 0;i = i++;System.out.println(i); } No seria mais 'lgico' retornar 1, como em C++ ?Abraos,CristianoBS-- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SPdvidas mais comuns: http://www.soujava.org.br/faq.htmregras da lista: http://www.soujava.org.br/regras.htmhistorico: http://www.mail-archive.com/java-list%40soujava.org.brpara sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SPdvidas mais comuns: http://www.soujava.org.br/faq.htmregras da lista: http://www.soujava.org.br/regras.htmhistorico: http://www.mail-archive.com/java-list%40soujava.org.brpara sair da lista: envie email para [EMAIL PROTECTED]- -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas mais comuns: http://www.soujava.org.br/faq.htmregras da lista: http://www.soujava.org.br/regras.htmhistorico: http://www.mail-archive.com/java-list%40soujava.org.brpara sair da lista: envie email para [EMAIL PROTECTED] - -- "'You guys (at Microsoft) still don't get it,' because it's sort of Java with reliability, productivity and security deleted." James Gosling
Re: RES: [java-list] código obscuro!!
Nao tem nada de dependente de plataforma. Esse comportamento eh consistente em qualquer implementacao correta de JVM. On Thu, 28 February 2002, Giuliano de Aquino wrote Tá aí o teste... Porém...ouvi dizer aqui na lista que isto é dependente de plataforma... Não sei se é verdade... mas se for devemos ter muito cuidado mesmo Alguém sabe dizer se é realmente verdade -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] código obscuro!!
Ok Entendí... mas (pa (campainha tocando)) errado... não é este o comportamento... Vc vai, pedir o valor de i++ a JVM; Ele irá lhe devolver o valor atual de i, e imediatamente irá incrementar O que acontece então... o seu codigo pede i++ a JVM incrementa i... a JVM devolve O QUE TINHA em i... (em função da ordem do ++) o seu codigo atribui O QUE TINHA em i... i então ficou com o que tinha Quer mais uma prova , eu inclui um metodo que sempre volta 0 eu seu codigo original, imprimindo o valor de i, na proxima vez que vc precisa de i... e veja o resultado Note que enquanto voce estiver dentro do statement i sera igual a 1 (a partir da segunda iterção no statement), e só será 0 após a execução do statement inteiro public class Class1 { public static void main(String arg[]) { int i=0; i=i++ + sempreZero(i); System.out.println ( i = + i); } public static int sempreZero(int valor) { System.out.println (Valor intermediario = + valor); return 0; } } Valor intermediario = 1 i = 0 Espero que isto não lhe confunda ainda mains... he he :-) Me responda em pvt se isto ajudou... []s, Clebert - Original Message - From: Lindomar Silva [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Wednesday, February 27, 2002 9:19 PM Subject: Re: [java-list] código obscuro!! É um teste interessante bruno... Creio que o procedimento não ceja bem atribuir antes e realizar o incremento depois, já que o incremento se dá na mesma variável que recebe o zero. Acho que o comportamento é o seguinte: Quando o interpratador verifica o tipo de instrução ele sabe que tem que fazer uma atribuição primeiro, mas nesta atribuição temos uma instrução antes. Então: a atribuição (i=(i) que é 0) ele guarda num determinado endereço, e realiza o incremento i++, que nada mais é do que i=i+1, que é i=1. Ok, o incremento foi realizado, agora ele vai naquele endereço que guardou o 0 e faz i=0; Logo em determinado instante i se torna 1 mas no final recebe o 0. Se for feito i=++i, ele irá primeiro incrementar para depois atribuir o valor de i=(i), que é 1. Por isso é que dá 1 no final. Façam o teste com outra variável, por exemplo: k=i++; e depois k=++i; Creio que deva ajudar a endender minha linha de raciocínio. - Original Message - From: Paulo Bruno Contopoulos [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Wednesday, February 27, 2002 4:23 AM Subject: RES: [java-list] código obscuro!! -Mensagem original- De: Cristiano Bianchi Sanchez [mailto:[EMAIL PROTECTED]] Enviada em: terça-feira, 26 de fevereiro de 2002 11:59 Para: [EMAIL PROTECTED] Assunto: [java-list] código obscuro!! Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Não, porque quando você coloca i++, ele atribui antes de adicionar. Aliás, porque não fazer i++ direto, ou você só estava fazendo um teste? []'s, Paulo Bruno Contopoulos -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.325 / Virus Database: 182 - Release Date: 02/19/2002 _ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: Re: [java-list] código obscuro!!
003401c1bfed$a46c7450$[EMAIL PROTECTED]"> Ento: a atribuio (i=(i) que 0) ele guarda num determinado endereo, erealiza o incremento i++, que nada mais do que i=i+1, que i=1.Ok, o incremento foi realizado, agora ele vai naquele endereo que guardou o0 e faz i=0;Logo em determinado instante i se torna 1 mas no final recebe o 0. mais ou menos isso o que acontece a pergunta se certo... 003401c1bfed$a46c7450$[EMAIL PROTECTED]"> Se for feito i=++i, ele ir primeiro incrementar para depois atribuir ovalor de i=(i), que 1. Por isso que d 1 no final.Faam o teste com outra varivel, por exemplo: k=i++; e depois k=++i;Creio que deva ajudar a endender minha linha de raciocnio. Pois , esse a diferenca entre pre-increment e post increment operator. 003401c1bfed$a46c7450$[EMAIL PROTECTED]"> - Original Message -From: "Paulo Bruno Contopoulos" [EMAIL PROTECTED]To: [EMAIL PROTECTED]Sent: Wednesday, February 27, 2002 4:23 AMSubject: RES: [java-list] cdigo obscuro!! -Mensagem original-De: Cristiano Bianchi Sanchez [mailto:[EMAIL PROTECTED]]Enviada em: tera-feira, 26 de fevereiro de 2002 11:59Para: [EMAIL PROTECTED]Assunto: [java-list] cdigo obscuro!!Oi lista, Algum pode explicar porque a seguinte implementao retorna 0 (zero)? {int i = 0;i = i++;System.out.println(i); } No seria mais 'lgico' retornar 1, como em C++ ? No, porque quando voc coloca i++, ele atribui antes de adicionar. Alis,porque no fazer i++ direto, ou voc s estava fazendo um teste?[]'s,Paulo Bruno Contopoulos-- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SPdvidas mais comuns: http://www.soujava.org.br/faq.htmregras da lista: http://www.soujava.org.br/regras.htmhistorico: http://www.mail-archive.com/java-list%40soujava.org.brpara sair da lista: envie email para [EMAIL PROTECTED]Outgoing mail is certified Virus Free.Checked by AVG anti-virus system (http://www.grisoft.com).Version: 6.0.325 / Virus Database: 182 - Release Date: 02/19/2002_Do You Yahoo!?Get your free @yahoo.com address at http://mail.yahoo.com-- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usurios Java da Sucesu-SP dvidas mais comuns: http://www.soujava.org.br/faq.htmregras da lista: http://www.soujava.org.br/regras.htmhistorico: http://www.mail-archive.com/java-list%40soujava.org.brpara sair da lista: envie email para [EMAIL PROTECTED] - -- "'You guys (at Microsoft) still don't get it,' because it's sort of Java with reliability, productivity and security deleted." James Gosling
Re: FW: [java-list] código obscuro!!
Voce estah enganado. i = i++; Nao eh equivalente a i = i; i = i + 1; i = i++; Eh equivalente a: exp = i; i = i + 1; i = exp; onde 'exp' eh a expressao a direita do sinal de atribuicao '='. Essa regra existe em qualquer linguagem que inplemente OPERADOR de auto incremento/decremento que eu conheca (C, C++, Java e C#), nao confundir com as funcoes dec() e inc() do Pascal/Delphi, que nao tem esse problema de precedencia. E o que difere no caso de i = ++i; eh justamente a ordem das operacoes no calculo da expressao, veja: i = ++i; Eh equivalente a: i = i + 1; exp = i; i = exp; On Wed, 27 February 2002, Silva, Jobson wrote O resultado correto deveria ser UM ! O trecho i = i++; eh equivalente a i = i; i = i + 1; Se esta retornando ZERO tem alguma coisa errada ai ! Alguem sabe ??? []s Jobson Silva -Original Message- From: Paulo Bruno Contopoulos [mailto:[EMAIL PROTECTED]] Sent: Wednesday, 27 February, 2002 01:24 To: [EMAIL PROTECTED] Subject: RES: [java-list] código obscuro!! -Mensagem original- De: Cristiano Bianchi Sanchez [mailto:[EMAIL PROTECTED]] Enviada em: terça-feira, 26 de fevereiro de 2002 11:59 Para: [EMAIL PROTECTED] Assunto: [java-list] código obscuro!! Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Não, porque quando você coloca i++, ele atribui antes de adicionar. Aliás, porque não fazer i++ direto, ou você só estava fazendo um teste? []'s, Paulo Bruno Contopoulos -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] código obscuro!!
De qual codigo voce estah falando? class PlusPlusAEsquerdaRetornaUm public static void main (String[] a) { int i = 0; i = ++i; System.out.println(i); } ou class PlusPlusADireitaRetornaZero public static void main (String[] a) { int i = 0; i = i++; System.out.println(i); } Eh justamente esse o problema. Em que momento a variavel 'i' eh incrementada. Se eh usado i++, 'i' serah incrementada APOS o valor da expressao ser calculado, e o valor final de 'i' (APOS a atribuicao) serah ZERO. Se eh usado ++i, 'i' serah incrementada ANTES do valor da expressao ser calculado, e o valor final de 'i' (APOS a atribuicao) serah UM. Silvio On Wed, 27 February 2002, Valdenia Eduardo wrote vcs me desculpem, mas eu compilei e obtive 1 e não zero. É verdade que quando coloco i++ o java só avalia depois, mas depois de que??? (depois de avaliar o resto da expressão, que neste caso termina no ponto e vírgula). Quando chega na linha seguinte já deve estar como 1. Eduardo - Original Message - From: Renan Milfont [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Wednesday, February 13, 2002 8:36 AM Subject: Re: [java-list] código obscuro!! Primeiro ele atribui o valor de i recebendo 0 e só depois ele faz a soma entedeu ? Para dar um, o código deveria ser assim. { int i = 0; i = ++i; System.out.println(i); } - Original Message - From: Cristiano Bianchi Sanchez [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Tuesday, February 26, 2002 11:58 AM Subject: [java-list] código obscuro!! Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Abraços, CristianoBS -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] código obscuro!!
Normalmente, se vc não atribuiu nenhum valor a váriavel, ela é iniciada com o valor zero. Logo i = i++ retorna zero para depois incrementar o valor de i; Se vc quiser retornar 1 deve utilizar o seguinte i = ++i; []'s Giuliani - Original Message - From: Silva, Jobson [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Wednesday, February 27, 2002 11:18 AM Subject: FW: [java-list] código obscuro!! O resultado correto deveria ser UM ! O trecho i = i++; eh equivalente a i = i; i = i + 1; Se esta retornando ZERO tem alguma coisa errada ai ! Alguem sabe ??? []s Jobson Silva -Original Message- From: Paulo Bruno Contopoulos [mailto:[EMAIL PROTECTED]] Sent: Wednesday, 27 February, 2002 01:24 To: [EMAIL PROTECTED] Subject: RES: [java-list] código obscuro!! -Mensagem original- De: Cristiano Bianchi Sanchez [mailto:[EMAIL PROTECTED]] Enviada em: terça-feira, 26 de fevereiro de 2002 11:59 Para: [EMAIL PROTECTED] Assunto: [java-list] código obscuro!! Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Não, porque quando você coloca i++, ele atribui antes de adicionar. Aliás, porque não fazer i++ direto, ou você só estava fazendo um teste? []'s, Paulo Bruno Contopoulos -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: RES: [java-list] código obscuro!!
A questão é que: (1) i=0; (2) i=i++; (atribuir e depois incrementar) ou i=++i (incrementar e depois atribuir) (3) valor de i Tanto faz (na segunda linha) a atribuição ser antes ou depois do incremento de i, pois chegando na linha 3 o incremento em i deveria ter ocorrido, já que na linha 2 um incremento tem que ocorrer. Dei uma idéia sobre isso num e-mail anterior, mas a dúvida continua. Só pode ser coisa da linguagem mesmo, por que pela lógica de programação deveria dar 1 em ambos os casos. Tanto é se vocês testarem com as linhas de comando (1) k=i++ e (2)k=++i, os resultadossão realmente os esperados (1) k=0, i=1. (2) k=1, i=1. - Original Message - From: Sven van ´t Veer To: [EMAIL PROTECTED] Sent: Wednesday, February 27, 2002 1:45 PM Subject: Re: RES: [java-list] código obscuro!! [EMAIL PROTECTED]" type="cite"> Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? {int i = 0;i = i++;System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ?Não, porque quando você coloca i++, ele atribui antes de adicionar. Aliás,porque não fazer i++ direto, ou você só estava fazendo um teste?Porém, de qualquer forma, mesmo atribuindo antes de adicionar ele deveria fazer igual o C++ uma vez que a precedencia em C++ é igual.-- "'You guys (at Microsoft) still don't get it,' because it's sort of Java with reliability, productivity and security deleted." James Gosling ---Outgoing mail is certified Virus Free.Checked by AVG anti-virus system (http://www.grisoft.com).Version: 6.0.325 / Virus Database: 182 - Release Date: 02/19/2002
Re: [java-list] código obscuro!!
Para o código abaixo retornar faça a seguinte alteração: { int i = 0; i = ++i; System.out.println(i); } - Original Message - From: Paulo Bruno Contopoulos [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Wednesday, February 27, 2002 1:23 AM Subject: RES: [java-list] código obscuro!! -Mensagem original- De: Cristiano Bianchi Sanchez [mailto:[EMAIL PROTECTED]] Enviada em: terça-feira, 26 de fevereiro de 2002 11:59 Para: [EMAIL PROTECTED] Assunto: [java-list] código obscuro!! Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Não, porque quando você coloca i++, ele atribui antes de adicionar. Aliás, porque não fazer i++ direto, ou você só estava fazendo um teste? []'s, Paulo Bruno Contopoulos -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] código obscuro!!
O problema é precedência de operadores, altere a linha i = i++ por i = ++i - Original Message - From: Cristiano Bianchi Sanchez [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Tuesday, February 26, 2002 11:58 AM Subject: [java-list] código obscuro!! Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Abraços, CristianoBS -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] código obscuro!!
mais fácil: { int i = 0; i++; System.out.println(i); } - Original Message - From: eduardo [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Wednesday, February 27, 2002 6:38 PM Subject: Re: [java-list] código obscuro!! Para o código abaixo retornar faça a seguinte alteração: { int i = 0; i = ++i; System.out.println(i); } -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] código obscuro!!
No java vc é obrigado a inicializar uma variável, normalmente ela nunca irá inicializar com valor zero. - Original Message - From: Fenix [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Thursday, February 28, 2002 9:56 AM Subject: Re: [java-list] código obscuro!! Normalmente, se vc não atribuiu nenhum valor a váriavel, ela é iniciada com o valor zero. Logo i = i++ retorna zero para depois incrementar o valor de i; Se vc quiser retornar 1 deve utilizar o seguinte i = ++i; []'s Giuliani - Original Message - From: Silva, Jobson [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Wednesday, February 27, 2002 11:18 AM Subject: FW: [java-list] código obscuro!! O resultado correto deveria ser UM ! O trecho i = i++; eh equivalente a i = i; i = i + 1; Se esta retornando ZERO tem alguma coisa errada ai ! Alguem sabe ??? []s Jobson Silva -Original Message- From: Paulo Bruno Contopoulos [mailto:[EMAIL PROTECTED]] Sent: Wednesday, 27 February, 2002 01:24 To: [EMAIL PROTECTED] Subject: RES: [java-list] código obscuro!! -Mensagem original- De: Cristiano Bianchi Sanchez [mailto:[EMAIL PROTECTED]] Enviada em: terça-feira, 26 de fevereiro de 2002 11:59 Para: [EMAIL PROTECTED] Assunto: [java-list] código obscuro!! Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Não, porque quando você coloca i++, ele atribui antes de adicionar. Aliás, porque não fazer i++ direto, ou você só estava fazendo um teste? []'s, Paulo Bruno Contopoulos -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] código obscuro!!
Por favor, chega de código obscuro. Já tem milhões de emails com isto, já esta mais que claro. - Original Message - From: eduardo [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Wednesday, February 27, 2002 6:51 PM Subject: Re: [java-list] código obscuro!! O problema é precedência de operadores, altere a linha i = i++ por i = ++i - Original Message - From: Cristiano Bianchi Sanchez [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Tuesday, February 26, 2002 11:58 AM Subject: [java-list] código obscuro!! Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Abraços, CristianoBS -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: RES: [java-list] código obscuro!!
Tá aí o teste... Porém...ouvi dizer aqui na lista que isto é dependente de plataforma... Não sei se é verdade... mas se for devemos ter muito cuidado mesmo Alguém sabe dizer se é realmente verdade -- C:\Desenv\Java\testejava testaIAntes da terrÝvel d·vida(i=i++;), i vale:0Depois da terrÝvel d·vida(i=i++;), i vale:0Agora com (i=++i;), i vale:1System.out.println(i) : 0System.out.println(i++) : 0System.out.println(i) : 1Dentro do while (5=i++), i vale:0Dentro do while (5=i++), i vale:1Dentro do while (5=i++), i vale:2Dentro do while (5=i++), i vale:3Dentro do while (5=i++), i vale:4Dentro do while (5=i++), i vale:5Dentro do while (5=i++), i vale:6Dentro do while (5=++i), i vale:0Dentro do while (5=++i), i vale:1Dentro do while (5=++i), i vale:2Dentro do while (5=++i), i vale:3Dentro do while (5=++i), i vale:4Dentro do while (5=++i), i vale:5- public class testaI { int i;public testaI(){ i =0;System.out.println("Antes da terrível dúvida(i=i++;), i vale:" + i);i = i++;System.out.println("Depois da terrível dúvida(i=i++;), i vale:" + i);i = ++i;System.out.println("Agora com (i=++i;), i vale:" + i); i=0;System.out.println("System.out.println(i) : " + i);System.out.println("System.out.println(i++) : " + i++);System.out.println("System.out.println(i) : " + i); i=0;do{ System.out.println("Dentro do while (5=i++), i vale:" + i); }while(5 = i++); i=0; do{ System.out.println("Dentro do while (5=++i), i vale:" + i); }while(5 = ++i); } public static void main(String [] arg){testaI app = new testaI();} } --- - Original Message - From: Lindomar Silva To: [EMAIL PROTECTED] Sent: Wednesday, February 27, 2002 3:36 AM Subject: Re: RES: [java-list] código obscuro!! A questão é que: (1) i=0; (2) i=i++; (atribuir e depois incrementar) ou i=++i (incrementar e depois atribuir) (3) valor de i Tanto faz (na segunda linha) a atribuição ser antes ou depois do incremento de i, pois chegando na linha 3 o incremento em i deveria ter ocorrido, já que na linha 2 um incremento tem que ocorrer. Dei uma idéia sobre isso num e-mail anterior, mas a dúvida continua. Só pode ser coisa da linguagem mesmo, por que pela lógica de programação deveria dar 1 em ambos os casos. Tanto é se vocês testarem com as linhas de comando (1) k=i++ e (2)k=++i, os resultadossão realmente os esperados (1) k=0, i=1. (2) k=1, i=1. - Original Message - From: Sven van ´t Veer To: [EMAIL PROTECTED] Sent: Wednesday, February 27, 2002 1:45 PM Subject: Re: RES: [java-list] código obscuro!! [EMAIL PROTECTED] type="cite"> Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? {int i = 0;i = i++;System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ?Não, porque quando você coloca i++, ele atribui antes de adicionar. Aliás,porque não fazer i++ direto, ou você só estava fazendo um teste?Porém, de qualquer forma, mesmo atribuindo antes de adicionar ele deveria fazer igual o C++ uma vez que a precedencia em C++ é igual.-- "'You guys (at Microsoft) still don't get it,' because it's sort of Java with reliability, productivity and security deleted." James Gosling ---Outgoing mail is certified Virus Free.Checked by AVG anti-virus system (http://www.grisoft.com).Version: 6.0.325 / Virus Database: 182 - Release Date: 02/19/2002
RES: [java-list] código obscuro!!
-Mensagem original- De: Cristiano Bianchi Sanchez [mailto:[EMAIL PROTECTED]] Enviada em: terça-feira, 26 de fevereiro de 2002 11:59 Para: [EMAIL PROTECTED] Assunto: [java-list] código obscuro!! Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Não, porque quando você coloca i++, ele atribui antes de adicionar. Aliás, porque não fazer i++ direto, ou você só estava fazendo um teste? []'s, Paulo Bruno Contopoulos -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
RES: [java-list] código obscuro!!
Não! Veja bem amigo, em Java existem duas possibilidades diferentes de se fazer incrementos. Estas duas maneiras seriam, de acordo com seu exemplo: 1) i = i++; ou 2) i = ++i; No seu exemplo, o Java primeiro leu o valor de i (que vc declarou sendo 0) e ,só depois de ter lido o valor de i (zero), ele fez o incremento da variável! Se vc tivesse colocado i = ++i; aí sim, o Java faria primeiro o incremento (adicionando 1 á sua variável i) e DEPOIS leria o valor. Neste último caso, aí sim, o seu programa imprimiria 1... ok? []´s! Paulo André Antonialli Analista de Sistemas - NDS [EMAIL PROTECTED] Fóton® Informática e Serviços http://www.foton.la Fone: (61) 328-5060 R.: 216 -Mensagem original- De: Cristiano Bianchi Sanchez [mailto:[EMAIL PROTECTED]] Enviada em: terça-feira, 26 de fevereiro de 2002 11:59 Para: [EMAIL PROTECTED] Assunto: [java-list] código obscuro!! Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Abraços, CristianoBS -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
RES: [java-list] código obscuro!!
Caro amigo, neste caso a operação é pos-fixada, ou seja, primeiro se atribui o valor antes do incremento da variavel e entao este ocorre. Este caso é especial, pois se utiliza a mesma variavel. Note que o proprio i++ é uma atribuicao de i = i + 1. a linha correta seria somente i++; ou i+=1; para que o resultado fosse 1. No seu caso o valor de i permanece como o valor antes do incremento. Como na especificacao: ...The value of the postfix increment expression is the value of the variable before the new value is stored... Resumo: O efeito do codigo i = i++; é o mesmo efeito que o do codigo i = i e nao representa efeito igual ao que foi exposto que seria: i = i; i++; (este efeito nao ocorre para o codigo apresentado) Espero ter ajudado consani -Mensagem original- De: Cristiano Bianchi Sanchez [mailto:[EMAIL PROTECTED]] Enviada em: terça-feira, 26 de fevereiro de 2002 11:59 Para: [EMAIL PROTECTED] Assunto: [java-list] código obscuro!! Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Abraços, CristianoBS -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] código obscuro!!
Isso é porque quando vc usa o i++ na atribuição, ele executa primeiro a atribuição para depois incrementar a variável. Para a solução do problema utilize ++i, ou seja: i = ++i; Sandro - Original Message - From: Cristiano Bianchi Sanchez [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Tuesday, February 26, 2002 11:58 AM Subject: [java-list] código obscuro!! Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Abraços, CristianoBS -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] código obscuro!!
Isso é por causa da procedencia do operador aritmético, para funcionar o que você quer o comando deve ser i = ++i , assim será primeiro processada a operação aritmética e depois o retorno do valor da variavel, sendo que i = i++ , primeiro faz o retorno da variavel e depois a operação aritmética. Pegadinhas do Java. []´s Marcello Mendes - Original Message - From: Cristiano Bianchi Sanchez [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Tuesday, February 26, 2002 11:58 AM Subject: [java-list] código obscuro!! Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Abraços, CristianoBS -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] código obscuro!!
Caro Cristiano, Quando você utiliza o incremento à direita do número,(i++), você primeiro retorna o número e depois soma 1. Para você fazer aquilo que pretendia,(não existe necessidade), você deveria utilizar o incremento à esquerda do número (++i). Isto vale também para a linguagem C++, verifique se o que você afirmou realmente ocorre, o que seria verdadeiramente obscuro :). Espero ter ajudado []s, Agnelo de Jesus. { int i = 0; i = i++; System.out.println(i); } Em 26 Feb 2002, [EMAIL PROTECTED] escreveu: Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Abraços, CristianoBS -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- Agnelo de Jesus. _ Oi! Você quer um iG-mail gratuito? Então clique aqui: http://registro.ig.com.br/censo/igmail -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] código obscuro!!
i = ++i; //retornaria 1 mas é muito redundante, utilize i++; ou ++i; apenas... - Original Message - From: Cristiano Bianchi Sanchez [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Tuesday, February 26, 2002 11:58 AM Subject: [java-list] código obscuro!! Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Abraços, CristianoBS -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
RES: [java-list] código obscuro!!
Por que vc nao faz i = ++i ao inves de i = i++ ? assim ele atribui depois e o resultado sera 1 como vc esperava Pedro Herrera Sun Certified Programmer for Java 2 Plataform From: "Paulo Bruno Contopoulos" <[EMAIL PROTECTED]> Reply-To: [EMAIL PROTECTED] To: <[EMAIL PROTECTED]> Subject: RES: [java-list] código obscuro!! Date: Wed, 27 Feb 2002 01:23:35 -0300 -Mensagem original- De: Cristiano Bianchi Sanchez [mailto:[EMAIL PROTECTED]] Enviada em: terça-feira, 26 de fevereiro de 2002 11:59 Para: [EMAIL PROTECTED] Assunto: [java-list] código obscuro!! Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Não, porque quando você coloca i++, ele atribui antes de adicionar. Aliás, porque não fazer i++ direto, ou você só estava fazendo um teste? []'s, Paulo Bruno Contopoulos -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - Associe-se ao maior serviço de e-mail do mundo através do MSN Hotmail. http://www.hotmail.com/BR -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: RES: [java-list] código obscuro!!
[EMAIL PROTECTED]"> Algum pode explicar porque a seguinte implementao retorna 0 (zero)? {int i = 0;i = i++;System.out.println(i); } No seria mais 'lgico' retornar 1, como em C++ ? No, porque quando voc coloca i++, ele atribui antes de adicionar. Alis,porque no fazer i++ direto, ou voc s estava fazendo um teste? Porm, de qualquer forma, mesmo atribuindo antes de adicionar ele deveria fazer igual o C++ uma vez que a precedencia em C++ igual. -- "'You guys (at Microsoft) still don't get it,' because it's sort of Java with reliability, productivity and security deleted." James Gosling
Re: RES: [java-list] código obscuro!!
É só um teste que caiu em uma entrevista de emprego. Mas a pegadinha é que o operador '++' tem maior precedência que o operador '=' . O trecho deve funcionar da seguinte forma: 1. Avalia o valor de i primeiro (que é zero). 2. Incrementar o i para 1; 3. Atribui o valor avaliado de i (que foi zero) para a atribuição, então o i volta a ser zero. Está na especificação do Java que operadores ++ são dependentes da implementação da JVM. Cuidado pessoal... On Wed, 27 Feb 2002 01:23:35 -0300 Paulo Bruno Contopoulos [EMAIL PROTECTED] wrote: -Mensagem original- De: Cristiano Bianchi Sanchez [mailto:[EMAIL PROTECTED]] Enviada em: terça-feira, 26 de fevereiro de 2002 11:59 Para: [EMAIL PROTECTED] Assunto: [java-list] código obscuro!! Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Não, porque quando você coloca i++, ele atribui antes de adicionar. Aliás, porque não fazer i++ direto, ou você só estava fazendo um teste? []'s, Paulo Bruno Contopoulos -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
FW: [java-list] código obscuro!!
O resultado correto deveria ser UM ! O trecho i = i++; eh equivalente a i = i; i = i + 1; Se esta retornando ZERO tem alguma coisa errada ai ! Alguem sabe ??? []s Jobson Silva -Original Message- From: Paulo Bruno Contopoulos [mailto:[EMAIL PROTECTED]] Sent: Wednesday, 27 February, 2002 01:24 To: [EMAIL PROTECTED] Subject: RES: [java-list] código obscuro!! -Mensagem original- De: Cristiano Bianchi Sanchez [mailto:[EMAIL PROTECTED]] Enviada em: terça-feira, 26 de fevereiro de 2002 11:59 Para: [EMAIL PROTECTED] Assunto: [java-list] código obscuro!! Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Não, porque quando você coloca i++, ele atribui antes de adicionar. Aliás, porque não fazer i++ direto, ou você só estava fazendo um teste? []'s, Paulo Bruno Contopoulos -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] código obscuro!!
vcs me desculpem, mas eu compilei e obtive 1 e não zero. É verdade que quando coloco i++ o java só avalia depois, mas depois de que??? (depois de avaliar o resto da expressão, que neste caso termina no ponto e vírgula). Quando chega na linha seguinte já deve estar como 1. Eduardo - Original Message - From: Renan Milfont [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Wednesday, February 13, 2002 8:36 AM Subject: Re: [java-list] código obscuro!! Primeiro ele atribui o valor de i recebendo 0 e só depois ele faz a soma entedeu ? Para dar um, o código deveria ser assim. { int i = 0; i = ++i; System.out.println(i); } - Original Message - From: Cristiano Bianchi Sanchez [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Tuesday, February 26, 2002 11:58 AM Subject: [java-list] código obscuro!! Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Abraços, CristianoBS -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] código obscuro!!
É um teste interessante bruno... Creio que o procedimento não ceja bem atribuir antes e realizar o incremento depois, já que o incremento se dá na mesma variável que recebe o zero. Acho que o comportamento é o seguinte: Quando o interpratador verifica o tipo de instrução ele sabe que tem que fazer uma atribuição primeiro, mas nesta atribuição temos uma instrução antes. Então: a atribuição (i=(i) que é 0) ele guarda num determinado endereço, e realiza o incremento i++, que nada mais é do que i=i+1, que é i=1. Ok, o incremento foi realizado, agora ele vai naquele endereço que guardou o 0 e faz i=0; Logo em determinado instante i se torna 1 mas no final recebe o 0. Se for feito i=++i, ele irá primeiro incrementar para depois atribuir o valor de i=(i), que é 1. Por isso é que dá 1 no final. Façam o teste com outra variável, por exemplo: k=i++; e depois k=++i; Creio que deva ajudar a endender minha linha de raciocínio. - Original Message - From: Paulo Bruno Contopoulos [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Wednesday, February 27, 2002 4:23 AM Subject: RES: [java-list] código obscuro!! -Mensagem original- De: Cristiano Bianchi Sanchez [mailto:[EMAIL PROTECTED]] Enviada em: terça-feira, 26 de fevereiro de 2002 11:59 Para: [EMAIL PROTECTED] Assunto: [java-list] código obscuro!! Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Não, porque quando você coloca i++, ele atribui antes de adicionar. Aliás, porque não fazer i++ direto, ou você só estava fazendo um teste? []'s, Paulo Bruno Contopoulos -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.325 / Virus Database: 182 - Release Date: 02/19/2002 _ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
[java-list] código obscuro!!
Oi lista, Alguém pode explicar porque a seguinte implementação retorna 0 (zero)? { int i = 0; i = i++; System.out.println(i); } Não seria mais 'lógico' retornar 1, como em C++ ? Abraços, CristianoBS -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -