Duvida em incremento

5 respostas
P

Folks,

uma duvida no resultado

no

if((y == true) || (++z == 44)) z++;

qdo comparou ++z == 44 não foi incrementado z …

para entrar no if e depois não incrmentou z++

o resultado não seria 45…minha duvida ???

class Test2 {
 2.    public static void main(String [] args) {
 3.      boolean x = true;
 4.      boolean y = false;
 5.      short z = 42;
 6.
 7.      if((x == true) && (y = true))  z++;
 8.      if((y == true) || (++z == 44)) z++;
 9.
10.      System.out.println("z = " + z);
11.    }
12.  }

resultado 44

5 Respostas

sigma
A primeira condicao do if e true e como e um OR ele nao executa a segunda parte.

Similar se fosse um AND e a primeira parte fosse false ele nao executaria a segunda parte.

E uma classica em provas.

A primeira condicao do if e true e como e um OR ele nao executa a segunda parte.

Similar se fosse um AND e a primeira parte fosse false ele nao executaria a segunda parte.

E uma classica em provas.

M

Tem certeza que o resultado é 44?

H

if((x == true) && (y = true)) z++;

Note que y recebe true, ele não compara nada, isso é uma atribuição, fatalmente z++ será executado e z é incrementado.

if((y == true) || (++z == 44)) z++;
Como a primeira parte já deu true ele nem avalia a segunda parte porque sendo true ou false o comando será executado, afinal trata-se de um OR e sendo assim se um lado for true a expressão é true.

Abraços.
Higor

J

olá!
caso queira forçar todas as avaliações lógicas para que o resultado seja 45
ficaria mais ou menos assim:

if((x == true) & (y = true))  z++;  
if((y == true) | (++z == 44)) z++;

o & diferente do &&, compara todas as expressoes independente do resultado
e igualmente… || -> |

falws!

michelantunes

Na verdade, Z= 42

no trecho:

if((y == true) | (++z == 44)) z++;

ele compara 42 com 44 e logo após a comparação atribui +1 ao Z, ficando, então, com 43.
quando ele entra no IF, vai para 44.

Esclarecido?

Abs,

Criado 2 de setembro de 2008
Ultima resposta 2 de set. de 2008
Respostas 5
Participantes 6