En la lección 6 revisamos los tipos de dato soportados en C++ de forma resumida, de esa lección podemos recuperar la siguiente tabla:
Tipo | Nombre | Tamaño | Rango* | Comentario |
char | Character (Carácter) | 1 byte | con signo: -128 a 127 sin signo: 0 a 255 | Se utiliza en los caracteres ASCII de cadenas de estilo C antiguas u objetos std::string que nunca tendrán que convertirse a UNICODE. |
bool | Booleano | 1 byte | 0-1 | Representa valores que pueden ser true o false. |
int | Integer (Entero) | 4 bytes | con signo: -2147483648 a 2147483647 sin signo: 0 a 4294967295 | Opción predeterminada para los valores enteros. |
double | Doble | 8 bytes | 1.7e +/- 308 (15 digitos) | Opción predeterminada para los valores de punto flotante. |
que son lo que hemos estado utilizando hasta el momento (además el tipo de dato string, el cual se revisará más adelante)
Si no lo has hecho te sugiero revisar esta lección, te puede aportar información que puede ser relevante.
Ahora estamos en condiciones de abordar la revisión completa de los tipos de dato que soporta la definición del lenguaje C++
Tipos de dato en C++
C++ admite 7 tipos fundamentales de tipos de dato: char, int, bool, float, double, void y enum, algunos además definen subtipos que modifican el rango del tipo de dato, de esta forma podemos definir una serie de «familias» en los tipos de dato.
Familia | Tipo Base | Subtipos | Rango* (Compiladores bajo i386) | Comentario |
Enteros | char | char, wchar_t | char – 1 byte wchar_t – | char – Almacena caracteres ASCII, es equivalente a un entero wchar_t – Almacena caracteres Unicode |
Booleanos | bool | bool | 0-1 | Representa valores que pueden ser true o false. |
Enteros | int | short, int, long, long long | short – 2 byte | Los objetos del tipo short se pueden declarar como signed short o unsigned short. Signed short es un sinónimo de short int. |
int – 4 byte | Los objetos del tipo int se pueden declarar como signed int o unsigned int. Signed int es un sinónimo de int. | |||
long – 8 byte | Los objetos del tipo long se pueden declarar como signed long o unsigned long. Signed long es un sinónimo de long. | |||
long long – 16 byte | Los objetos del tipo long long se pueden declarar como signed long long o unsigned long long. Signed long long es un sinónimo de long long. | |||
De punto flotante | double | float, double, long double | float – 4 byte | El tipo float es el tipo de punto flotante más pequeño. |
double – 8 byte | El tipo double es un tipo flotante superior o igual al tipo float, pero inferior o igual al tamaño del tipo long double. Opción predeterminada para los valores de punto flotante. | |||
long double – 16 byte | El tipo long double es un tipo de punto flotante que es superior o igual al tipo double. | |||
void | Null | El tipo void describe un conjunto de valores vacío. No se puede especificar ninguna variable de tipo void; se utiliza principalmente para declarar funciones que no devuelven ningún valor o para declarar punteros genéricos a datos sin tipo o con un tipo arbitrario. | ||
enum | varía | Una enumeración es un tipo definido por el usuario que consta de un conjunto de constantes enteras con nombre conocidas como enumeradores. |
Modificadores de tipos de dato: short, long, signed y unsigned
Como puedes apreciar los tipos base (concretamente los int y double) pueden modificar su rango con el uso de los modificadores, en este caso:
short y long
- short in: Entero corto
- long int: Entero Largo
- long double: Largo doble (punto flotante)
De forma predeterminada los tipos enteros y char son con signo, tal como se definen en álgebra, de este modo está implícito en su definición el modificador:
signed (con signo)
- signed char es equivalente a char
- signed int es equivalente a int
- signed long es equivalente a long
- signed long long es equivalente a long long
Podemos ampliar el «tamaño hacia el lado positivo» de una variable entera utilizando el modificador
unsigned (sin signo)
- unsigned short
- unsigned int
- unsigned long
- unsigned long long
En un sistema con arquitectura i386, los rangos definidos para una variable entera pueden ser:
int a; a, puede tomar valores entre –2,147,483,648 a 2,147,483,647 unsigned int a; a, puede tomar valores entre 0 a 4,294,967,295
Valores de los Tipos de dato en C++
Con esta información en mente podemos presentar los valores numéricos de los tipos de dato fundamentales en C++
Nombre de tipo | Bytes | Otros nombres | Intervalo de valores |
---|---|---|---|
int | 4 | signed | De –2,147,483,648 a 2,147,483,647 |
unsigned int | 4 | unsigned | De 0 a 4,294,967,295 |
bool | 1 | ninguna | false o true |
char | 1 | ninguna | De –128 a 127 de manera predeterminada |
signed char | 1 | ninguna | De –128 a 127 |
unsigned char | 1 | ninguna | De 0 a 255 |
short | 2 | short int, signed short int | De –32,768 a 32,767 |
unsigned short | 2 | unsigned short int | De 0 a 65,535 |
long | 4 | long int, signed long int | De –2,147,483,648 a 2,147,483,647 |
unsigned long | 4 | unsigned long int | De 0 a 4,294,967,295 |
long long | 8 | ninguno | De –9,223,372,036,854,775,808 a 9,223,372,036,854,775,807 |
unsigned long long | 8 | ninguno | De 0 a 18,446,744,073,709,551,615 |
enum | varía | ninguna | Vea más adelante en este artículo |
float | 4 | ninguna | 3.4E +/- 38 (7 dígitos) |
double | 8 | ninguna | 1.7E +/- 308 (15 dígitos) |
long double | igual que double | ninguna | Igual que double |
wchar_t | 2 | ninguna | De 0 a 65,535 |
void | ninguna | ||
enum | Variable | ninguna | Variable |
en la siguiente lección revisaremos los tipos enumerados.
Void.
void es un tipo especial que indica la ausencia de tipo. Se usa para indicar el tipo del valor de retorno en funciones que no devuelven ningún valor, y también para indicar la ausencia de parámetros en funciones que no los requieren, (aunque este uso sólo es obligatorio en C, y opcional en C++). Cuando se utiliza en la declaración de un puntero, void especifica que el puntero es «universal».
Las funciones que no devuelven valores parecen una contradicción. En lenguajes como Pascal, estas funciones se llaman procedimientos. Hacen su trabajo, y no devuelven valores. Por ejemplo, una función que se encargue de borrar la pantalla, no tienen nada que devolver, hace su trabajo y regresa. Lo mismo se aplica a las funciones sin parámetros de entrada, el mismo ejemplo de la función para borrar la pantalla no requiere ninguna entrada para poder realizar su cometido.
Restricciones para void
Si el tipo de puntero es void *, el puntero puede señalar a cualquier variable que no se declare con la palabra clave const o volatile. Un puntero void no se puede des referenciar a menos que se convierta en otro tipo. Un puntero void se puede convertir en cualquier otro tipo de puntero de datos.
Un puntero void puede señalar a una función, pero no a un miembro de clase en C++.
No se puede declarar una variable de tipo void.
¿int main o void main?
En la segunda parte de este trabajo abordaremos esta pregunta tan frecuente de algunos programadores.
Conclusión
Esta lección ha puesto en la mesa muchos términos y conceptos que iremos revisando en las siguientes lecciones, si algo no quedó claro, te pido paciencia, a partir de la siguiente lección se irán aclarando las dudas
¿Notaste la palabra «puntero»?, bueno eso es una de las cosas que hacen a C (y por extensión a C++) tan «especial». Por el momento conocer el término es suficiente.
Si tienes alguna duda que no se responde en este documento, por favor plantea tu pregunta para poder responderte. O escribe directamente a soporte@ehack.mx
Referencias
- Por Roberto C. González para Ethical Hack
- La tabla de Tipos de dato en C++ contiene información tomada y adaptada de la página Tipos fundamentales (C++) by Microsoft MSDN
- La tabla Valores de los Tipos de dato en C++ se ha tomado de Microsoft MSDN, adaptándola y eliminando las referencias a Visual C++, dejando únicamente la información aplicable a C++ estándar
- El párrafo Void, se ha tomado de C con clase, puedes visitar el sitio del capítulo 2 de ese magnífico sitio y se ha enriquecido con información de la librería de Microsoft MSDN
Fuente Imágenes
- «Todas las imágenes de esta sección»: by Envato Elements
Tutorial de C++ by eHack
- Volver al índice de temas del Tutorial de C++
- *** Durante todo este tutorial se repetirá: Este es un curso orientado a gente que nunca ha programado, incluso a gente ajena a la informática. Por esta razón el desarrollo puede parecer lento en ciertas etapas. Prefiero ser claro paso a paso, que hacer «pasos mágicos» como suele ocurrir cuando se enseña programación. *** También es buena idea leas esta entrada si te preguntas «Por qué C++»
Código Fuente
- El código fuente de toda la serie lo puedes descargar en nuestro repositorio en github busca los programas con el nombre del encabezado de cada programa.
- Código de esta sección
Tipo de dato básicos en C++, por Roberto C. González. Se distribuye bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 4.0 Internacional.
©2025, Ethical Hack, Todos los derechos reservados sobre el contenido propio.