Após a execução do código abaixo, a variável a terá o valor ...
int a = 3;
int b = 4;
int c = 5;
a = b < c ? b:c;
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Resposta correta: E - Errado
A questão aborda o conceito de operador ternário em Java, que é uma forma concisa de realizar uma atribuição condicional. O operador ternário é expresso da seguinte forma:
variável = (condição) ? expressão1 : expressão2;
O que isso significa é que se a condição é verdadeira (true), então a variável recebe o valor da expressão1; caso contrário, se a condição é falsa (false), a variável recebe o valor da expressão2.
Na questão apresentada, temos:
int a = 3;
int b = 4;
int c = 5;
a = b < c ? b : c;
A condição b < c é verdadeira, uma vez que o valor de b (4) é de fato menor que o valor de c (5). Portanto, seguindo a lógica do operador ternário, a variável a deve receber o valor da variável b, não o valor da variável c.
Assim, após a execução do código, a terá o valor 4, que é o valor de b. Logo, a afirmação de que a terá o valor de c após a execução do código é incorreta.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
int a = 3;
int b = 4;
int c = 5;
a = b < c ? b : c;
que é o mesmo (exatamente o mesmo) que:
int a=3;
int b=4;
int c = 5;
if(b < c){
a = b;
} else {
a = c;
}
O Java fornece o operador condicional, que pode ser utilizado no lugar de uma instrução if... else. Esse é o único operador ternário (que recebe 3 operandos) do Java. Juntos, os operandos e o símbolo ?: formam uma expressão condicional. O primeiro operando (à esquerda do ?) é uma expressão booleana, o segundo operando (entre o ? e :) é o valor da expressão condicional se a expressão booleana for true, e o terceiro operando (à direita do :) é o valor da expressão condicional se a expressão booleana for avaliada como false. ?:
Neste caso, então, o 1º operando “a = b < c” é a expressão booleana, o 2º operando “b” é o valor da expressão condicional se a expressão booleana for true, e o 3º operando “c” é o valor da expressão condicional se a expressão booleana for avaliada como false.
Como "b" é menor do que "c", então a variável “a” receberá o valor da variável “b”.
Resposta: Errado
Simplificando:
a = condição (b < c) ? se condição verdade (b) : se condição falso (c)
Como o b(4) é menor que c(5), então condição verdadeira. Retorna "b".
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo