PCF-3

Questões comentadas, artigos e notícias

Java Puzzle [#4] – Operador Condicional

Posted by p3r1t0cr1m1n4l em 20/02/2009

O que o programa abaixo imprime?

public class JavaPuzzle4 {
  public static void main(String[] args) {
    char x = 'X';
    int i = 0;
    System.out.print(true ? x : 0);
    System.out.print(false ? i : x);
  }
}

Solução: O programa imprime X88.

Para se determinar tipo resultante de uma expressão condicional, é necessário analisar três pontos:

(1) Se os operandos têm o mesmo tipo, esse será o tipo resultante da expressão condicional.

(2) Se um dos operadores é do tipo T: byte, short ou char, e o outro operador é uma expressão constante do tipo int cujo valor pode ser representado por T, o tipo da expressão condicional será T.

(3) Caso contrário, a promoção numérica binária será aplicada aos tipos do operando.

Analisando a primeira parte:

char x = 'X';
System.out.print(true ? x : 0);

Um dos operadores é char e o outro é um inteiro constante (zero) e pode ser representado em char (0). Caímos então no caso (2). O resultado é ‘X’.

Analisando a segunda parte:

int i = 0;
System.out.print(false ? i : x);

Um dos operadores ainda é zero, porém na forma da variável i. Aplicando a promoção numérica binária, o resultado será int.

O tipo da expressão condicional determina qual método de print será invocado. Na primeira expressão ( PrintStream.print(char) )e na segunda ( PrintStream.print(int) ). Aquele método imprime o valor da variável x como um caractere Unicode (X), enquanto este imprime um decimal inteiro que representa o X em Unicode (88).

Até o próximo puzzle!

Uma resposta to “Java Puzzle [#4] – Operador Condicional”

  1. Enthroned said

    XX ?

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

 
%d blogueiros gostam disto: