Analise o seguinte trecho de código Java: int n= 017; System.out.println(n); O que acontecerá após a execução?
- A)Imprime 017 na saída padrão.
Errada, porque o println mostra o valor armazenado na variável, e 017 foi interpretado como octal, não como texto.
- B)Imprime 17 na saída padrão.
Errada, porque 017 não vale 17 em decimal; com zero à esquerda, Java lê o literal como octal.
- C)Imprime 15 na saída padrão por conversão implícita de octal para decimal.
Certa, porque 017 é um literal octal em Java e seu valor decimal equivalente é 15, que será impresso.
- D)Produz erro de compilação.
Errada, porque esse código é sintaticamente válido em Java e compila normalmente.
- E)Produz erro em tempo de execução.
Errada, porque não há exceção em tempo de execução nesse caso; o programa apenas imprime o valor convertido.
Gabarito: C
Em Java, quando voce escreve um número inteiro começando com 0, ele não é lido como decimal comum. Esse detalhe faz toda a diferença: o compilador interpreta esse literal como octal, que é o sistema de base 8. Ou seja, os algarismos válidos vão de 0 a 7, e o valor 017 em octal equivale a 15 em decimal. Na prática, a variável n recebe o valor 15. Quando o System.out.println(n) executa, ele imprime o valor numérico armazenado na variável, e não a forma como o literal foi digitado no código. Então nada de "017" na saída: o que aparece é o valor convertido para decimal. Esse é um clássico de provas de Java: literal com zero à esquerda pode mudar completamente a leitura do número. Não há erro de compilação nem de execução aqui, porque 017 é um literal octal válido. O resultado correto é a impressão de 15. Em resumo: em Java, inteiro com zero inicial é octal por regra da linguagem, e 017(octal) = 15(decimal).