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++
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. |
Como puedes apreciar los tipos base (concretamente los int y double) pueden modificar su rango con el uso de los modificadores, en este caso:
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:
Podemos ampliar el “tamaño hacia el lado positivo” de una variable entera utilizando el modificador
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
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 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.
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.
En la segunda parte de este trabajo abordaremos esta pregunta tan frecuente de algunos programadores.
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.
Tipo de dato básicos en C++ by Roberto C. González is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License.
El comando dnsenum es una herramienta de línea de comandos para realizar enumeración de DNS…
En esta entrada te presento 24 de las listas negras más comunes que los servidores…
ZoomIt es una herramienta de anotación y zoom de pantalla para presentaciones técnicas que incluyen…
WinObj es el visor de espacios de nombres de Object Manager definitivo. Es la primera…
Whois realiza el registro de registro para el nombre de dominio o la dirección IP…
VolumeID – Esta utilidad, le permite cambiar los identificadores de los discos FAT y NTFS…