Python

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:

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.

 


Ethical Hack

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.

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.
eHack Blog

Entradas recientes

dnsenum

El comando dnsenum es una herramienta de línea de comandos para realizar enumeración de DNS…

1 año hace

Las 24 listas negras de IPv4 más comunes.

En esta entrada te presento 24 de las listas negras más comunes que los servidores…

2 años hace

ZoomIt – SysInternals

ZoomIt es una herramienta de anotación y zoom de pantalla para presentaciones técnicas que incluyen…

2 años hace

WinObj – SysInternals

WinObj es el visor de espacios de nombres de Object Manager definitivo. Es la primera…

2 años hace

WhoIs – SysInternals

Whois realiza el registro de registro para el nombre de dominio o la dirección IP…

2 años hace

VolumeID – SysInternals

VolumeID – Esta utilidad, le permite cambiar los identificadores de los discos FAT y NTFS…

2 años hace