SóProvas


ID
2765392
Banca
IF-RS
Órgão
IF-RS
Ano
2018
Provas
Disciplina
Programação
Assuntos

Considerando o código Java a seguir:

1 public class Loop {
2 public static void main(String[] a) {
3 int cont=0;
4 for (int i=0; i>=0; i+=2, cont++);
5 System.out.println("cont:"+cont); }}

É CORRETO afirmar que:

Alternativas
Comentários
  • IF-RS querendo técnico para a NASA? Enfim...

    Acredito que QUEM ACERTOU ESSA QUESTÃO merece ir pra NASA DIRETO, sem pensar ..

     

    a) O código não compila devido a um erro na linha 4.

              Incorreta, o laço for está perfeito for ([inicialização]; [condição]; [expressão final]) 

     

     b) O código não compila devido a um erro na linha 5. 

            Incorreta,  o que poderia confundir um pouco são as 2 chaves ao final da linha, porém são os fechamentos, das respectivas chaves, da linha 2 e da linha 1;

     

     c) O código compila e executa normalmente imprimindo "1073741824".

              Correta, nunca vi uma questão abortando isso mas vamos lá...

                   Qual valor do tipo primitivo INT? Rapidamente, vocês falariam 32 BITS!!!!  Porém qual o valor máximo que cabe em 32 bits? Puts complicou né... o valor máximo é 2.147.483.647 .

                      Após esse valor a variável i ESTOURA!! Sim overflow !!!

                        Após isso , 'RENASCE' com o valor negativo de - 2.147.483.648. como  QUALQUER VALOR NEGATIVO É MENOR QUE ZERO! Saimos do laço for e executamos a linha 5

                       Mas da onde saiu o valor 1073741824??   Dividam 2.147.483.647 por 2. Mas por que por 2? Porque o incremento de i+=2. 

                        Arredondando o valor da divisão chegamos ao valor 1073741824.

     

     d) O código compila e executa, mas fica preso em um laço infinito.

               Incorreta, por mais que pareça um laço infinito a explicação acima nos mostra que NÃO É!

     

     e) O código compila e executa normalmente imprimindo "false".

             Incorreta, não há sentido nessa afirmação

  • Os infra pira !!!!!

    Gabarito C

  • Explicação quase perfeita do `MAX Q`, assumindo que as contas estejam corretas (não fui conferir). De qualquer modo, essa questão deveria ser ANULADA!

    É impossível imprimir apenas o valor dito por ele (ou qualquer outro número) quando o código é: `System.out.println("cont:"+cont);`. No mínimo seria impresso `count: 1073741824`.

    Ou seja, fora os problemas que ficam na cara (formatação, pegadinha, ...), a questão está errada.

  • O diabo elaborou essa prova do IF-RS

  • Pensei que era letra A por ter colocado um ";" depois do for. Mas ele fez uma declaração vazia propositalmente

  • quem acertou de primeira merece NASA mesmo kkkk