C++ is a strongly typed and object-oriented language. Therefore, the data types determine the characteristics and behavior of the variables manipulated throughout the execution of a program.
These data types are provided by the language and are designed to handle individual values (such as integers, floating-point numbers, characters, and boolean values).
The implementation details (such as size) of each type depend on the compiler and even the operating system.
Basic Types
The bool type in C++ is a data type used to store logical values (i.e., true or false).
Type | Bytes | Range |
---|---|---|
bool | 1 | true / false |
The bool type is declared using the keyword bool
and can be assigned a value of true
or false
, for example:
bool verdadero = true;
bool falso = false;
The bool type is very useful for making decisions in a program and for performing comparisons
The char type in C++ is a data type used to store individual characters (such as letters, numbers, and symbols).
Type | Bytes | Range |
---|---|---|
char | 1 |
The char type is declared using the keyword char
and can be assigned a value in single quotes, for example:
char letra = 'A';
The char type can also be used to store ASCII values, which are numeric codes assigned to each character on the keyboard.
The integer types in C++ are used to store numbers without a decimal part. They include several variants that differ in size and sign.
Type | Bytes | Range |
---|---|---|
signed char | 1 | -128 to 127 |
unsigned char | 1 | 0 to 255 |
short | 2 | -2^15 to 2^15 - 1 |
unsigned short | 2 | 0 to 2^16 - 1 |
int | 4 | -2^31 to 2^31 - 1 |
unsigned int | 4 | 0 to 2^32 - 1 |
long int | 4/8 | |
long unsigned int | 4/8 | |
long long int | 8 | -2^63 to 2^63 - 1 |
long long unsigned int | 8 | 0 to 2^64 - 1 |
Example:
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
The floating-point data types are used to store numbers with decimal parts.
Type | Size (bytes) | Precision | Minimum Range | Maximum Range |
---|---|---|---|---|
float | 4 | Single precision | ±1.5 x 10^-45 | ±3.4 x 10^38 |
double | 8 | Double precision | ±5.0 x 10^-324 | ±1.7 x 10^308 |
long double | 16 | High precision | ±3.4 x 10^-4932 | ±1.1 x 10^4932 |
Example:
float numeroFloat = 10.5f; // 'f' is optional in C++
double numeroDouble = 20.99;
long double numeroLongDouble = 100.50L; // 'L' is optional in C++
Structures
The struct in C++ allows the creation of user-defined value aggregation types.
Example:
struct Punto {
int X;
int Y;
};
Punto punto = {10, 20};
Enumerations
The enum allows the creation of a set of related constants under a specific type name.
Example:
enum Dias {
Lunes, Martes, Miercoles, Jueves, Viernes, Sabado, Domingo
};
Dias hoy = Lunes;
Arrays
The arrays allow storing a collection of elements of the same type in a single variable.
Example of an array:
int numeros[] = {1, 2, 3, 4, 5};
Arrays in C++ have a fixed size, and the size must be known at compile time.
You can access the elements using indices, starting from 0.
Reference Types
The reference types in C++ include pointers and references. These types allow manipulating memory and referring to other variables.
Pointers store memory addresses and allow direct manipulation of memory.
int numero = 10;
int* puntero = № // Pointer that stores the address of 'numero'
References are aliases for other variables.
int numero = 10;
int& referencia = numero; // Reference to 'numero'
Strings in C++ are handled through the std::string
class, which provides a convenient way to work with sequences of characters.
#include <string>
std::string saludo = "Hello, World!";
Unions
The unions allow storing different data types in the same memory space. Only one member of the union can be used at a time.
union Datos {
int entero;
float flotante;
char caracter;
};
Datos d;
d.entero = 10;
d.flotante = 20.5f; // The value of entero is no longer valid
Classes
The classes are groupings that allow encapsulating data and methods (they are the basis of object-oriented programming in C++)
class Coche {
public:
std::string marca;
int año;
void arrancar() {
std::cout << "The car is running." << std::endl;
}
};
Coche miCoche;
miCoche.marca = "Toyota";
miCoche.año = 2024;
miCoche.arrancar();