Exercícios Resolvidos de Operadores Booleanos

Ver Teoria

Enunciado

Se eu fizer a comparação 10   = =   ‘ C ’ vou receber algum erro? Explique. OBS: Não se preocupe em dizer se o resultado é verdadeiro ou falso, apenas explique se essa é uma operação válida.

Passo 1

E aí galerinha! Vamos pra mais uma questão.

Antes de irmos pra resposta de fato, vamos falar um pouco sobre os detalhes da questão.

Pra responder, vamos precisar lembrar de um comportamento chamado conversão automática de tipos. Quando o C++ encontra uma operação entre dois tipos diferentes, automaticamente os valores de tipo mais baixo são convertidos pra um tipo mais alto.

Ou seja, no momento em que a gente fizer a comparação 10   = =   ‘ C ’ , o caractere ‘ C ’ será automaticamente convertido para um inteiro, e a comparação ocorrerá normalmente, sem gerar nenhum erro!

E pronto! Respondemos à questão! Mas se você quiser mais detalhes sobre a conversão de tipos, da uma olhadinha no passo 2 onde eu explico os detalhes.

Passo 2

Mas como um caractere, como a letra ‘C’, é convertido para um número? Os caracteres serão convertidos para inteiro de acordo com uma tabela chamada ASCII:

Essa tabela é dada em hexadecimal, e pra saber o número de um caractere é só cruzar a linha com a coluna. Por exemplo, a letra “J” é representada pelo hexadecimal 4 A (ou 72 em decimal). Já a letra " C " é representada pelo hexadecimal 43 , que é equivalente ao decimal 66 !

Ou seja: 10   = =   ‘ C ’   ⇔ E Q U I V A L E N T E 10 = = 66 , e o resultado dessa comparação é f a l s e

E prontinho, agora você sabe os detalhes do que acontece sob o capô do C++.

Resposta

Nenhum erro é levantado pelo compilador. Quando tipos de dados diferentes estão em uma mesma operação, o C++ efetua uma conversão automática de tipos. A letra ‘C’ será convertida para um valor inteiro equivalente de acordo com a tabela ASCII, e a comparação irá seguir o curso natural.