Type Casting Parte 1
Parte de la sección Fundamentos del Journey de C++ de Coddy — lección 14 de 74.
La conversión de tipos es el proceso de convertir un valor de un tipo de datos a otro.
En C++, podemos convertir enteros a doubles, doubles a enteros y más. Existen dos tipos de conversión (casting): implícita (automática) y explícita (manual).
Por ejemplo Integer to Double:
Casting implícito (automático):
int number = 5;
double decimal = number; // automáticamente se convierte en 5.0
// con cálculo
int x = 7;
double result = x / 2.0; // el resultado es 3.5Nota: Al dividir dos valores int, C++ realiza una división entera — la parte decimal se descarta. Por ejemplo, 7 / 2 da 3, no 3.5. Para obtener un resultado decimal, al menos un operando debe ser un double (por ejemplo, 7 / 2.0 da 3.5).
Conversión explícita (manual) Double to Integer:
double decimal = 9.7;
int number = (int) decimal; // se convierte en 9 (la parte decimal se trunca)
// con cálculo
double price = 19.99;
int roundedPrice = (int) price; // se convierte en 19Estilo preferido de C++ moderno: En lugar del moldeado al estilo C (int) decimal, es mejor práctica utilizar static_cast<>(), que es más seguro y más explícito sobre su intención:
double decimal = 9.7;
int number = static_cast<int>(decimal); // se convierte en 9 (la parte decimal se trunca)
double price = 19.99;
int roundedPrice = static_cast<int>(price); // se convierte en 19Nota: Tanto (int) value como static_cast<int>(value) producen el mismo resultado aquí, pero static_cast<>() es el enfoque recomendado en C++ moderno, ya que hace que la conversión sea claramente visible y es verificada por el compilador.
Desafío
PrincipianteEscribe un programa en C++ que demuestre la conversión de tipos (type casting). Realiza lo siguiente:
Convierte la variable price a un int y almacena el resultado en una nueva variable llamada intPrice.
Hoja de referencia
La conversión de tipos (type casting) convierte valores de un tipo de datos a otro.
Conversión implícita (automática) — ocurre automáticamente:
int number = 5;
double decimal = number; // automáticamente se convierte en 5.0
int x = 7;
double result = x / 2.0; // el resultado es 3.5 (int/int descarta los decimales)Conversión explícita (manual) — estilo C y el moderno static_cast:
double price = 19.99;
int a = (int) price; // estilo C: se convierte en 19
int b = static_cast<int>(price); // preferido en C++ moderno: se convierte en 19Nota: Convertir un double a int trunca (elimina) la parte decimal. static_cast<>() es preferible en C++ moderno por claridad y seguridad del compilador.
Pruébalo tú mismo
#include <iostream>
int main() {
// Declarar e inicializar variables
double price = 99.99;
int intPrice = ?; // Conversión explícita de double a int
// Mostrar los valores
std::cout << "Price: " << price << std::endl;
std::cout << "Int Price: " << intPrice << std::endl;
return 0;
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores Parte 1
Operadores aritméticosOperador móduloIncremento/DecrementoPost-incremento/decrementoAtajos aritméticosOperadores de comparaciónComparación de strings7Conceptos básicos de Entrada/Salida
Sentencia coutSentencia cinEntrada de cadenasResumen - Hasta 120Resumen - Verdadero o Falso5Operadores Parte 2
Operadores lógicos Parte 1Operadores lógicos Parte 2Repaso - Lógica simpleOperadores lógicos Parte 38Calculadora de números
Mensaje de bienvenidaObtención de números3Variables Parte 2
Declaración de tiposConvenciones de nomenclaturaResumen - Inicializar variablesType Casting Parte 1Type Casting Parte 26Toma de decisiones
Sentencia IfIf - ElseSentencia SwitchOperador condicionalRepaso - If ElseIf - Else anidados