Se eu fizer a comparação 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 , o caractere 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 (ou 72 em decimal). Já a letra é representada pelo hexadecimal , que é equivalente ao decimal !
Ou seja: , e o resultado dessa comparação é
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.