Questão FC373268
Considere o bloco de código abaixo, em uma aplicação Java em condições ideais. int a=0, b=1, c=2, d=4; boolean x, y, z; x = (a * c + 2 != d) && !(d / c >= c); y = !x || false; z =
Linguagens de Programação
FCC · 2022
Considere o bloco de código abaixo, em uma aplicação Java em condições ideais.
int a=0, b=1, c=2, d=4;
boolean x, y, z;
x = (a * c + 2 != d) && !(d / c >= c);
y = !x || false;
z = y && !x || d/a != b;
Ao executar com sucesso o código acima, as variáveis x, y e z conterão, respectivamente, os valores
- true, true e true.
- false, false e false.
- true, true e false.
- false, true e true.
- true, false e true.
Mostrar resposta e comentário
Gabarito
D
Comentário do professor
Comece por x: substituindo valores, \(0*2+2=2\) e \(2 \neq 4\) é true. Também \(4/2 \ge 2\) é true, aplicando a negação obtém-se false. Assim \(x = true \ \&\&\ !true \Rightarrow x = false\).
Para y: \(y = !x || false = !false || false = true || false\), logo \(y = true\).
Agora z: a expressão é avaliada com precedência de && sobre ||, então primeiro \(y && !x = true && true = true\). Como o lado esquerdo do || já é true, o operador || faz short-circuit e NÃO avalia \(d/a\) (evitando divisão por zero). Portanto \(z = true\).
Resultado final: x = false, y = true, z = true.
Conteúdo do catálogo FC Concursos · Atualizado em