Saltar para o conteúdo
Topos Uranos

Resumo

Um tipo não fixa apenas quantos bytes um dado ocupa, mas também como seus bits são lidos: o mesmo byte é a letra “A” para um char e o número 65 para um int. Esta aula completa os tipos básicos com os caracteres e os booleanos, e estuda a passagem de um tipo a outro: as conversões implícitas, que o compilador faz sem que sejam pedidas e que podem perder informação; a conversão explícita com static_cast; e a inicialização com chaves, que rejeita as perdas. Termina com as constantes, const e constexpr, que convertem uma intenção (“este valor não muda”) numa garantia que o compilador verifica, e com os literais e auto, que decidem o tipo de um valor escrito no código-fonte.

Objetivos de aprendizagem

  1. Usar o código numérico de um caractere para calcular com ele, por exemplo para obter o valor de um dígito lido como caractere.
  2. Prever o resultado de uma conversão implícita entre inteiros, reais e booleanos, e escrever a conversão explícita com static_cast.
  3. Explicar por que a inicialização com chaves rejeita as conversões que perdem informação, e o que o GCC faz em cada caso.
  4. Declarar com const ou constexpr todo valor que não deve mudar, e distinguir uma palavra da outra.
  5. Deduzir o tipo de um literal (5, 5u, 5.0, 5.0f, '5', "5") e o que auto lhe atribui.

O tipo como interpretação

A aula Variáveis e memória apresentou a variável como uma caixa com nome, tipo e valor, e as aulas Os inteiros e sua representação e Os números de ponto flutuante mostraram que, dentro da caixa, não há números, mas bits, e que o tipo diz como lê-los. Esta aula leva essa ideia à sua consequência: se o tipo é a regra de leitura, então os mesmos bits significam coisas distintas conforme o tipo com que são lidos, e passar um valor de um tipo a outro, o que em C++ se chama conversão, é mudar de regra. Algumas conversões conservam o valor (o inteiro 7 se converte no real 7.0 sem perder nada); outras o alteram (o real 2.7 se converte no inteiro 2). Disso decorre a pergunta que percorre a aula: em cada conversão, o valor se conserva, e quem o verifica?