Todas las variables usan el tipo de datos durante la declaración para restringir el tipo de datos que se almacenarán. Por lo tanto, podemos decir que los tipos de datos se utilizan para decirle a las variables el tipo de datos que pueden almacenar. Cada vez que se define una variable en C++, el compilador asigna algo de memoria para esa variable en función del tipo de datos con el que se declara. Cada tipo de datos requiere una cantidad diferente de memoria.
C++ admite una amplia variedad de tipos de datos y el programador puede seleccionar el tipo de datos adecuado a las necesidades de la aplicación. Los tipos de datos especifican el tamaño y los tipos de valores que se van a almacenar. Sin embargo, la representación de almacenamiento y las instrucciones de la máquina para manipular cada tipo de datos difieren de una máquina a otra, aunque las instrucciones de C++ son idénticas en todas las máquinas.
C++ admite los siguientes tipos de datos:
- Tipo de datos primario o incorporado o fundamental
- Tipos de datos derivados
- Tipos de datos definidos por el usuario
Los tipos de datos en C++ se dividen principalmente en tres tipos:
1. Tipos de datos primitivos : estos tipos de datos son tipos de datos incorporados o predefinidos y pueden ser utilizados directamente por el usuario para declarar variables. ejemplo: int, char, float, bool, etc. Los tipos de datos primitivos disponibles en C++ son:
- Entero
- Personaje
- booleano
- Punto flotante
- Coma flotante doble
- Sin valor o vacío
- Carácter ancho
2. Tipos de datos derivados: los tipos de datos que se derivan de los tipos de datos primitivos o integrados se denominan tipos de datos derivados. Estos pueden ser de cuatro tipos a saber:
- Función
- Formación
- Puntero
- Referencia
3. Tipos de datos abstractos o definidos por el usuario: estos tipos de datos son definidos por el propio usuario. Como, como definir una clase en C++ o una estructura. C++ proporciona los siguientes tipos de datos definidos por el usuario:
- Clase
- Estructura
- Unión
- Enumeración
- Tipo de datos definido por Typedef
Este artículo analiza los tipos de datos primitivos disponibles en C++.
- Entero : la palabra clave utilizada para los tipos de datos enteros es int . Los números enteros generalmente requieren 4 bytes de espacio de memoria y van desde -2147483648 a 2147483647.
- Carácter : el tipo de datos de carácter se utiliza para almacenar caracteres. La palabra clave utilizada para el tipo de datos de carácter es char . Los caracteres normalmente requieren 1 byte de espacio de memoria y varían de -128 a 127 o de 0 a 255.
- Booleano : el tipo de datos booleano se utiliza para almacenar valores lógicos o booleanos. Una variable booleana puede almacenar verdadero o falso . La palabra clave utilizada para el tipo de datos booleano es bool .
- Punto flotante: el tipo de datos de punto flotante se utiliza para almacenar valores de punto flotante de precisión simple o valores decimales. La palabra clave utilizada para el tipo de datos de punto flotante es float . Las variables flotantes normalmente requieren 4 bytes de espacio de memoria.
- Punto flotante doble: el tipo de datos de punto flotante doble se utiliza para almacenar valores de punto flotante de doble precisión o valores decimales. La palabra clave utilizada para el tipo de datos de punto flotante doble es double . Las variables dobles normalmente requieren 8 bytes de espacio de memoria.
- void : Vacío significa sin ningún valor. El tipo de datos vacío representa una entidad sin valor. Se utiliza un tipo de datos vacío para aquellas funciones que no devuelven un valor.
- Carácter ancho : el tipo de datos de caracteres anchos también es un tipo de datos de caracteres, pero este tipo de datos tiene un tamaño mayor que el tipo de datos normal de 8 bits. Representado por wchar_t . Generalmente tiene una longitud de 2 o 4 bytes.
El tamaño de las variables puede ser diferente de los que se muestran en la tabla anterior, según el compilador
y la computadora que esté utilizando.
Operador sizeof: el operador sizeof se usa para encontrar el número de bytes ocupados por una variable/tipo de datos en la memoria de la computadora. Por ejemplo: int m , x[50]; cout<<tamaño(m); //devuelve 4 que es el número de bytes ocupados por la variable entera “m”. cout<<tamaño(x); //devuelve 200, que es el número de bytes ocupados por la variable de array de enteros «x».
C++
// Following is the example, which will produce correct size of various data types on your computer. #include <iostream> using namespace std; int main() { cout << "Size of char : " << sizeof(char) << endl; cout << "Size of int : " << sizeof(int) << endl; cout << "Size of long : " << sizeof(long) << endl; cout << "Size of float : " << sizeof(float) << endl; cout << "Size of double : " << sizeof(double) << endl; return 0; }
Size of char : 1 Size of int : 4 Size of long : 8 Size of float : 4 Size of double : 8
Complejidad de tiempo: O(1)
Complejidad espacial: O(1)
Modificadores de tipo de datos
Como sugiere el nombre, los modificadores de tipos de datos se utilizan con los tipos de datos integrados para modificar la longitud de los datos que puede contener un tipo de datos en particular.
Los modificadores de tipo de datos disponibles en C++ son:
- firmado
- No firmado
- Corto
- Largo
La siguiente tabla resume el tamaño modificado y el rango de tipos de datos incorporados cuando se combinan con los modificadores de tipo:
Tipo de datos |
Tamaño (en bytes) |
Rango |
---|---|---|
corto |
2 |
-32.768 a 32.767 |
int corto sin firmar |
2 |
0 a 65.535 |
int sin firmar |
4 |
0 a 4,294,967,295 |
En t |
4 |
-2.147.483.648 a 2.147.483.647 |
largo tiempo |
4 |
-2.147.483.648 a 2.147.483.647 |
int largo sin firmar |
4 |
0 a 4,294,967,295 |
mucho tiempo |
8 |
-(2^63) a (2^63)-1 |
int largo largo sin firmar |
8 |
0 a 18.446.744.073.709.551.615 |
carácter firmado |
1 |
-128 a 127 |
carácter sin firmar |
1 |
0 a 255 |
flotar |
4 |
|
doble |
8 |
|
largo doble |
12 |
|
wchar_t |
2 o 4 |
1 carácter ancho |
Nota : los valores anteriores pueden variar de un compilador a otro. En el ejemplo anterior, hemos considerado GCC de 32 bits.
Podemos mostrar el tamaño de todos los tipos de datos usando el operador sizeof() y pasando la palabra clave del tipo de datos, como argumento a esta función, como se muestra a continuación:
Ahora, para obtener el rango de tipos de datos, consulte el siguiente cuadro
Nota: el archivo de encabezado syntax<limits.h> se define para encontrar el rango de tipos de datos fundamentales. Los modificadores sin firmar tienen un valor mínimo de cero. Por lo tanto, no se definen constantes de macro para el valor mínimo sin signo.
Constantes de macros
Nombre Expresa
CHAR_MIN Valor mínimo para un objeto de tipo char
CHAR_MAX Valor máximo para un objeto de tipo char
SCHAR_MIN Valor mínimo para un objeto de tipo Char firmado
SCHAR_MAX Valor máximo para un objeto de tipo Char firmado
UCHAR_MAX Valor máximo para un objeto de tipo Char sin signo
CHAR_BIT Número de bits en un objeto char
MB_LEN_MAX Número máximo de bytes en un carácter
multibyte SHRT_MIN Valor mínimo para un objeto de tipo short int
SHRT_MAX Valor máximo para un objeto de tipo short int
USHRT_MAX Valor máximo para un objeto de tipo Unsigned short int
INT_MIN Valor mínimo para un objeto de tipo int
INT_MAX Valor máximo para un objeto de tipo int
UINT_MAX Valor máximo para un objeto de tipo Unsigned int
LONG_MIN Valor mínimo para un objeto de tipo long int
LONG_MAX Valor máximo para un objeto de tipo long int
ULONG_MAX Valor máximo para un objeto de tipo Unsigned long int
LLONG_MIN Valor mínimo para un objeto de tipo long long int
LLONG_MAX Valor máximo para un objeto de tipo long long int
ULLONG_MAX Valor máximo para un objeto de tipo Unsigned long long int
El valor real depende del sistema en particular y la implementación de la biblioteca, pero debe reflejar los límites de estos tipos en la plataforma de destino. LLONG_MIN, LLONG_MAX y ULLONG_MAX se definen para bibliotecas que cumplen con el estándar C de 1999 o posterior (que solo incluye el estándar C++ desde 2011: C++11).
Programa C++ para encontrar el rango de tipos de datos usando macro constantes
CPP
// C++ program to sizes of data types #include <iostream> #include <limits.h> using namespace std; int main() { cout << "Size of char : " << sizeof(char) << " byte" << endl; cout << "char minimum value: " << CHAR_MIN << endl; cout << "char maximum value: " << CHAR_MAX << endl; cout << "Size of int : " << sizeof(int) << " bytes" << endl; cout << "Size of short int : " << sizeof(short int) << " bytes" << endl; cout << "Size of long int : " << sizeof(long int) << " bytes" << endl; cout << "Size of signed long int : " << sizeof(signed long int) << " bytes" << endl; cout << "Size of unsigned long int : " << sizeof(unsigned long int) << " bytes" << endl; cout << "Size of float : " << sizeof(float) << " bytes" << endl; cout << "Size of double : " << sizeof(double) << " bytes" << endl; cout << "Size of wchar_t : " << sizeof(wchar_t) << " bytes" << endl; return 0; }
Salida :
Size of char : 1 byte Size of int : 4 bytes Size of short int : 2 bytes Size of long int : 8 bytes Size of signed long int : 8 bytes Size of unsigned long int : 8 bytes Size of float : 4 bytes Size of double : 8 bytes Size of wchar_t : 4 bytes
Complejidad de tiempo: O(1)
Complejidad espacial: O(1)
Este artículo es una contribución de Harsh Agarwal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA