28/03/2024
# Tags
#C++ #Programación

Tipo de dato básicos en C++

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:

TipoNombreTamañoRango*Comentario
charCharacter (Carácter)1 bytecon signo: -128 a 127 sin signo: 0 a 255Se utiliza en los caracteres ASCII de cadenas de estilo C antiguas u objetos std::string que nunca tendrán que convertirse a UNICODE.
boolBooleano1 byte0-1Representa valores que pueden ser true o false.
intInteger (Entero)4 bytescon signo: -2147483648 a 2147483647 sin signo: 0 a 4294967295Opción predeterminada para los valores enteros.
doubleDoble8 bytes1.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.

FamiliaTipo BaseSubtiposRango* (Compiladores bajo i386)Comentario
Enteroscharchar, wchar_tchar – 1 byte wchar_t –char – Almacena caracteres ASCII, es equivalente a un entero wchar_t – Almacena caracteres Unicode
Booleanosboolbool0-1Representa valores que pueden ser true o false.
Enterosintshort, int, long, long longshort – 2 byteLos objetos del tipo short se pueden declarar como signed short o unsigned short. Signed short es un sinónimo de short int.
int – 4 byteLos objetos del tipo int se pueden declarar como signed int o unsigned int. Signed int es un sinónimo de int.
long – 8 byteLos objetos del tipo long se pueden declarar como signed long o unsigned long. Signed long es un sinónimo de long.
long long – 16 byteLos 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 flotantedoublefloat, double, long doublefloat – 4 byteEl tipo float es el tipo de punto flotante más pequeño.
double – 8 byteEl 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 byteEl tipo long double es un tipo de punto flotante que es superior o igual al tipo double.
 void NullEl 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íaUna 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:  shortlongsigned 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 tipoBytesOtros nombresIntervalo de valores
int4signedDe –2,147,483,648 a 2,147,483,647
unsigned int4unsignedDe 0 a 4,294,967,295
bool1ningunafalse o true
char1ningunaDe –128 a 127 de manera predeterminada
signed char1ningunaDe –128 a 127
unsigned char1ningunaDe 0 a 255
short2short int, signed short intDe –32,768 a 32,767
unsigned short2unsigned short intDe 0 a 65,535
long4long int, signed long intDe –2,147,483,648 a 2,147,483,647
unsigned long4unsigned long intDe 0 a 4,294,967,295
long long8ningunoDe –9,223,372,036,854,775,808 a 9,223,372,036,854,775,807
unsigned long long8ningunoDe 0 a 18,446,744,073,709,551,615
enumvaríaningunaVea más adelante en este artículo
float4ninguna3.4E +/- 38 (7 dígitos)
double8ninguna1.7E +/- 308 (15 dígitos)
long doubleigual que doubleningunaIgual que double
wchar_t2ningunaDe 0 a 65,535
void ninguna 
enumVariableningunaVariable

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.


eHack Logo

Referencias

  • 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 demás imágenes de esta sección»: by Nala Systems

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.
Licencia de Creative Commons
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.
Tipo de dato básicos en C++

Estructura switch en C++

Tipo de dato básicos en C++

Enumeradores en C++

Leave a comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *