FC ConcursosFC Concursos

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

  1. true, true e true.
  2. false, false e false.
  3. true, true e false.
  4. false, true e true.
  5. 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

Continue aprendendo