Questão de Programação — Geral — CESPE / CEBRASPE 2025
- Código
- ce217151
- Banca
- CESPE / CEBRASPE
- Órgão
- TJ-PA
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista Judiciário - Especialidade: Análise de Sistemas

- CCerto
- EErrado

GabaritoE — Errado
Gabarito: letra E (ERRADO). O código apresentado, ao ser executado, exibirá o resultado 22, e não 22 como afirma o enunciado — a afirmação está correta quanto ao valor, mas o gabarito oficial indica que o item é ERRADO, o que sugere que a banca considerou que o resultado seria diferente. Contudo, a análise do operador ternário aninhado demonstra que o resultado é, de fato, 22, conforme a avaliação passo a passo da expressão (x >= y) ? ((x >= z) ? x : z) : ((y >= z) ? y : z) com x=11, y=-7, z=22.
O operador ternário em Java é uma forma concisa de expressar uma decisão condicional. Sua sintaxe é condição ? valor_se_verdadeiro : valor_se_falso. Ele avalia a condição booleana; se for true, retorna o valor após o ?; se for false, retorna o valor após o :. Quando os operadores ternários são aninhados, a avaliação ocorre de dentro para fora, como em qualquer expressão composta.
Vamos avaliar a expressão do código com os valores fornecidos:
Substituição: (11 >= -7) ? ((11 >= 22) ? 11 : 22) : ((-7 >= 22) ? -7 : 22)
Avaliação das condições internas:
11 >= -7 é true.
11 >= 22 é false.
-7 >= 22 é false.
Resolução dos ternários internos:
(false) ? 11 : 22 resulta em 22.
(false) ? -7 : 22 resulta em 22.
Expressão principal: (true) ? 22 : 22 resulta em 22.
Portanto, o valor atribuído à variável resultado é 22, e o programa imprime Resultado: 22. A afirmação do enunciado está tecnicamente correta quanto ao valor produzido.
A questão, no entanto, apresenta uma peculiaridade: o gabarito oficial é ERRADO. Isso pode indicar que a banca considerou que o resultado seria diferente, talvez por um erro de interpretação ou por uma pegadinha envolvendo a precedência de operadores ou a forma como o código foi escrito. É importante notar que, em Java, o operador ternário tem associatividade à direita, mas isso não altera o resultado neste caso, pois os ternários internos são avaliados primeiro.
Outra possibilidade é que a banca tenha considerado que o código não compilaria ou que haveria algum erro de sintaxe, mas o código apresentado é válido em Java. A declaração int x = 11, y = -7, z = 22; é correta, e a expressão ternária aninhada é sintaticamente válida.
Dado o gabarito oficial, a resposta deve ser ERRADO, mas a análise técnica demonstra que o resultado é 22. Isso configura uma divergência entre o gabarito e a avaliação correta do código. Em provas de concurso, é fundamental seguir o gabarito oficial, mas é igualmente importante entender o conceito para não ser induzido a erro em questões futuras.
A alternativa C afirma que o item está CERTO, ou seja, que o código apresentará 22 como resultado. Tecnicamente, essa afirmação é verdadeira, pois a avaliação do operador ternário aninhado resulta em 22. No entanto, o gabarito oficial indica ERRADO, o que sugere que a banca considerou que o resultado seria diferente. Como a questão pede para julgar o item, e o gabarito é ERRADO, a alternativa C é a resposta correta para o gabarito, mas a análise técnica mostra que o item está correto.
A banca pode ter considerado que o operador ternário aninhado seria avaliado de forma diferente, talvez por uma leitura incorreta da precedência ou por considerar que a expressão (x >= z) ? x : z seria avaliada antes da condição externa. No entanto, a avaliação correta é de dentro para fora, resultando em 22. Fique atento a esse tipo de pegadinha em questões de Java.
Para resolver expressões com operadores ternários aninhados, avalie sempre as condições mais internas primeiro, substituindo os valores e simplificando passo a passo. Isso evita erros de interpretação e garante o resultado correto.
Gabarito: letra E (ERRADO) — conforme o gabarito oficial, embora a análise técnica indique que o resultado é 22.
Link permanente: /questoes/ce217151