Resumen
Un tipo no solo fija cuántos bytes ocupa un dato, sino cómo se leen sus bits: el mismo byte es la letra «A» para un char y el número 65 para un int. Esta clase completa los tipos básicos con los caracteres y los booleanos, y estudia el paso de un tipo a otro: las conversiones implícitas, que el compilador hace sin pedirlas y que pueden perder información; la conversión explícita con static_cast, y la inicialización con llaves, que rechaza las pérdidas. Termina con las constantes, const y constexpr, que convierten una intención («este valor no cambia») en una garantía que el compilador verifica, y con los literales y auto, que deciden el tipo de un valor escrito en la fuente.
Objetivos de aprendizaje
- Usar el código numérico de un carácter para calcular con él, por ejemplo para obtener el valor de una cifra leída como carácter.
- Predecir el resultado de una conversión implícita entre enteros, reales y booleanos, y escribir la conversión explícita con
static_cast. - Explicar por qué la inicialización con llaves rechaza las conversiones que pierden información, y qué hace GCC en cada caso.
- Declarar con
constoconstexprtodo valor que no debe cambiar, y distinguir una palabra de la otra. - Deducir el tipo de un literal (
5,5u,5.0,5.0f,'5',"5") y el queautole asigna.
El tipo como interpretación
La clase Variables y memoria presentó la variable como una casilla con nombre, tipo y valor, y las clases Los enteros y su representación y Los números de coma flotante mostraron que, dentro de la casilla, no hay números sino bits, y que el tipo dice cómo leerlos. Esta clase lleva esa idea a su consecuencia: si el tipo es la regla de lectura, entonces los mismos bits significan cosas distintas según el tipo con que se lean, y pasar un valor de un tipo a otro, que en C++ se llama conversión, es cambiar de regla. Algunas conversiones conservan el valor (el entero 7 se convierte en el real 7.0 sin perder nada); otras lo alteran (el real 2.7 se convierte en el entero 2). De ello se sigue la pregunta que recorre la clase: en cada conversión, ¿se conserva el valor, y quién lo comprueba?
Cargando el contenido…