cpp-tipos-de-datos

Qué son y cómo usar los tipos en C++

C++ es un lenguaje fuertemente tipado y orientado a objetos. Por tanto, los tipos de datos determinan las características y el comportamiento de las variables que se manipulan a lo largo de la ejecución de un programa.

Estos tipos de datos son proporcionados por el lenguaje y están diseñados para manejar valores individuales (como números enteros, números de punto flotante, caracteres y valores booleanos).

Los detalles de la implementación (como el tamaño) de cada tipo dependen del compilador e incluso del sistema operativo.

Tipo Bool

El tipo bool en C++ es un tipo de datos utilizado para almacenar valores lógicos (es decir, verdadero o falso).

TipoBytesRango
bool1true / false

El tipo bool se declara usando la palabra clave bool y se puede asignar un valor de true o “false”, por ejemplo:

bool verdadero = true;
bool falso = false;

El tipo bool es muy útil para tomar decisiones en un programa y para realizar comparaciones

Tipo Char

El tipo char en C++ es un tipo de datos utilizado para almacenar caracteres individuales (como letras, números y símbolos).

TipoBytesRango
char1

El tipo char se declara usando la palabra clave char y se puede asignar un valor entre comillas simples, por ejemplo:

char letra = 'A';

El tipo char también se puede utilizar para almacenar valores ASCII, que son códigos numéricos asignados a cada carácter en el teclado

Enteros

Los tipos de números enteros en C++ se utilizan para almacenar números sin parte decimal. Incluyen varias variantes que difieren en tamaño y signo.

TipoBytesRango
signed char1-128 a 127
unsigned char10 a 255
short2-2^15 a 2^15 - 1
unsigned short20 a 2^16 - 1
int4-2^31 a 2^31 - 1
unsigned int40 a 2^32 - 1
long int4/8
long unsigned int4/8
long long int8-2^63 a 2^63 - 1
long long unsigned int80 a 2^64 - 1

Ejemplo:

int numeroEntero = 42;
unsigned int numeroEnteroPositivo = 42U;

2^15 = 32.768 2^16 = 65.536 2^31 = 2.147.483.648 2^32 = 4.294.967.296 2^63 = 9.223.372.036.854.775.808 2^64 = 18.446.744.073.709.551.616

Números de Punto Flotante

Los tipos de datos de punto flotante se utilizan para almacenar números con partes decimales.

TipoTamaño (bytes)PrecisiónRango MínimoRango Máximo
float4Simple precisión±1.5 x 10^-45±3.4 x 10^38
double8Doble precisión±5.0 x 10^-324±1.7 x 10^308
long double16Alta precisión±3.4 x 10^-4932±1.1 x 10^4932

Ejemplo:

float numeroFloat = 10.5f; // 'f' es opcional en C++
double numeroDouble = 20.99;
long double numeroLongDouble = 100.50L; // 'L' es opcional en C++

Estructuras

Las struct en C++ permiten la creación de tipos de agrupación de valor definidos por el usuario.

Ejemplo:

struct Punto {
    int X;
    int Y;
};

Punto punto = {10, 20};

Enumeraciones

Las enum permiten la creación de un conjunto de constantes relacionadas bajo un nombre de tipo específico.

Ejemplo:

enum Dias {
    Lunes, Martes, Miercoles, Jueves, Viernes, Sabado, Domingo
};

Dias hoy = Lunes;

Arrays

Los arrays permiten almacenar una colección de elementos del mismo tipo en una única variable.

Ejemplo de array:

int numeros[] = {1, 2, 3, 4, 5};

Los arrays en C++ tienen un tamaño fijo y el tamaño debe ser conocido en tiempo de compilación.

Puedes acceder a los elementos usando índices, comenzando desde 0.

Tipos de Referencia

Los tipos de referencia en C++ incluyen punteros y referencias. Estos tipos permiten manipular la memoria y referirse a otras variables.

Punteros

Los punteros almacenan direcciones de memoria y permiten manipular directamente la memoria.

Ejemplo de puntero:

int numero = 10;
int* puntero = № // Puntero que almacena la dirección de 'numero'

Referencias

Las referencias son alias para otras variables.

Ejemplo de referencia:

int numero = 10;
int& referencia = numero; // Referencia a 'numero'

Cadenas de Texto (std::string)

Las cadenas en C++ son manejadas a través de la clase std::string, que proporciona una manera conveniente de trabajar con secuencias de caracteres.

Ejemplo de uso de std::string:

#include <string>

std::string saludo = "Hola, Mundo!";

Uniones

Las uniones permiten almacenar diferentes tipos de datos en el mismo espacio de memoria. Solo se puede utilizar uno de los miembros de la unión a la vez.

union Datos {
    int entero;
    float flotante;
    char caracter;
};

Datos d;
d.entero = 10;
d.flotante = 20.5f; // El valor de entero ya no es válido

Clases

Las clases son son agrupaciones que permiten encapsular datos y métodos (son la base de la programación orientada a objetos en C++)

class Coche {
public:
    std::string marca;
    int año;

    void arrancar() {
        std::cout << "El coche está en marcha." << std::endl;
    }
};

Coche miCoche;
miCoche.marca = "Toyota";
miCoche.año = 2024;
miCoche.arrancar();