Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida no Ex. 7 da Aula 2 - Variáveis e fluxo

Por quê os seguintes códicos apresentam resultados diferentes?

/*Codigo 1; Este loop a partir do numero 21 retorna numeros negativos, e deposi disso só retorna zeros(0)*/

  long fatorial = 1;
         long i = 1;
              while(i <= 100) {
                   fatorial *= i;
                    System.out.println("fat (" + i + ") = " + fatorial);
             i++;
              }
 /*Codigo 2; Este loop funciona perfeitamente*/

long fatorial = 1;
              for(long i = 1;i <= 100; i++) {
                   fatorial *= i;
                    System.out.println("fat (" + i + ") = " + fatorial);
             i++;
              }
2 respostas

Cremildo,

Perceba que o segundo programa, apesar de executar por inteiro está incorreto.

O segundo programa, usando for ele está iterando de 2 em 2, iniciando em 1. Então a ordem fica, 1, 3, 5, 7...

O primeiro programa, está correto. Veja que o último valor apresentado é -9223372036854775808 que é justamente o limite do tipo long. Depois desse valor o programa simplesmente não tem o que fazer.

solução!

Obrigado joao! O que eu nao percebia é justamente que o long possui um limite!