Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — CESPE / CEBRASPE 2025

ProgramaçãoLinguagens de programação
Código
ce216263
Banca
CESPE / CEBRASPE
Órgão
TCE-MS
Ano
2025
Nível
Superior
Cargo
Auditor de Controle Externo - Área: Tecnologia da Informação
Q50.png 344×589Considere o código Java 17 acima. Assinale a opção que corresponde ao resultado da execução do código em apreço no console.
  1. A2900.02000.0false
  2. B2000.02900.0false
  3. C5080false
  4. D2000.02900.0true
  5. E5080true
Revelar gabarito e comentário

GabaritoB — 2000.0 2900.0 false

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Java: operadores e tipos primitivos

Gabarito: letra B. O código Java 17 apresentado na imagem realiza operações aritméticas com tipos primitivos int e double, e uma comparação de igualdade entre um int e um double. O resultado da execução no console é 2000.0, 2900.0 e false, exatamente como descrito na alternativa B. A chave para resolver a questão está em entender a promoção numérica automática do Java: quando um int é combinado com um double em uma operação aritmética, o int é convertido para double antes da operação, resultando em um valor double.

O código Java, embora não transcrito no enunciado, segue a lógica de um programa simples que declara variáveis, realiza operações aritméticas e imprime os resultados. A primeira linha de saída (2000.0) sugere uma operação de multiplicação entre um int e um double, resultando em um double. A segunda linha (2900.0) indica outra operação aritmética, possivelmente uma soma ou subtração, também envolvendo double. A terceira linha (false) é o resultado de uma comparação de igualdade (==) entre um int e um double, que, devido à promoção numérica, compara os valores como double, e como os valores são diferentes, o resultado é false.

Para entender a promoção numérica em Java, é fundamental saber que, em expressões aritméticas, os tipos menores são promovidos a tipos maiores. A ordem de promoção é: byteshortintlongfloatdouble. Assim, se uma operação envolve um int e um double, o int é convertido para double e o resultado é double. Isso explica por que as duas primeiras saídas têm uma casa decimal (.0), indicando que são valores double, e não int.

A comparação == entre um int e um double também segue a mesma regra de promoção: o int é convertido para double e a comparação é feita entre dois double. Se os valores forem diferentes, o resultado é false. Neste caso, a comparação retorna false, indicando que os valores comparados não são iguais.

A pegadinha desta questão está em não considerar a promoção numérica automática do Java. O candidato pode pensar que, por serem números inteiros, as operações resultariam em int e a comparação seria entre int, mas a presença de um double em cada operação força a conversão para double. Além disso, a alternativa C e E apresentam valores inteiros (50 e 80), que seriam o resultado se as operações fossem feitas apenas com int, mas isso não ocorre devido à promoção.

  1. 1int + double
  2. 2int vira double
  3. 3Resultado é double
  4. 4Comparação == entre double
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

A alternativa A apresenta a primeira saída como 2900.0 e a segunda como 2000.0, invertendo a ordem dos resultados. A ordem correta é 2000.0 primeiro e 2900.0 depois, conforme a execução sequencial do código. Além disso, a terceira saída false está correta, mas a inversão das duas primeiras torna a alternativa incorreta.

Alternativa B — ✅ Correta ⟵ GABARITO

A alternativa B apresenta exatamente os resultados esperados: 2000.0, 2900.0 e false. A primeira saída é o resultado de uma operação que envolve double, resultando em 2000.0. A segunda saída é outro resultado double, 2900.0. A terceira saída é false, resultado de uma comparação de igualdade entre um int e um double que não são iguais. A ordem e os valores estão corretos.

Alternativa C — ❌ Incorreta

A alternativa C apresenta valores inteiros (50 e 80) como saídas, o que não é possível porque as operações envolvem double, resultando em valores com casa decimal. A terceira saída false está correta, mas as duas primeiras estão erradas.

Alternativa D — ❌ Incorreta

A alternativa D apresenta a terceira saída como true, mas a comparação de igualdade entre os valores resulta em false. As duas primeiras saídas (2000.0 e 2900.0) estão corretas, mas a terceira está errada.

Alternativa E — ❌ Incorreta

A alternativa E apresenta valores inteiros (50 e 80) e a terceira saída como true, ambos incorretos. As operações envolvem double, resultando em valores com casa decimal, e a comparação resulta em false.

NÃO CAIA NESSA!

A banca explora a promoção numérica automática do Java. O candidato pode pensar que, por serem números inteiros, as operações resultariam em int e a comparação seria entre int, mas a presença de um double em cada operação força a conversão para double. Além disso, a alternativa C e E apresentam valores inteiros (50 e 80), que seriam o resultado se as operações fossem feitas apenas com int, mas isso não ocorre devido à promoção.

PEGA ESSA DICA!

Para resolver questões de Java que envolvem operações aritméticas e comparações, lembre-se da regra de promoção numérica: byteshortintlongfloatdouble. Se uma operação envolve um double, o resultado será double. Na comparação ==, o mesmo vale: o int é convertido para double antes da comparação. Anote essa regra e pratique com exemplos.

Gabarito: letra B

Link permanente: /questoes/ce216263