Todas las variables utilizan el tipo de datos durante las declaraciones 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. Diferentes tipos de datos requieren una cantidad diferente de memoria .
Entero: la palabra clave utilizada para los tipos de datos enteros es int. Los enteros normalmente requieren 4 bytes de espacio de memoria y van desde -2147483648 a 2147483647 .
Modificadores de tipo de datos: como su nombre lo indica, los modificadores de tipo de datos se utilizan con los tipos de datos incorporados para modificar la longitud de los datos que puede contener un tipo de datos en particular.
A continuación se muestra una lista de rangos junto con los requisitos de memoria y los especificadores de formato en el compilador GCC de 32 bits .
S. No. |
Tipo de datos |
Memoria (bytes) |
Rango |
1 | En t | 4 | -2^31 a 2^31- 1 |
2 | Interno largo | 4 | -2^31 a 2^31 – 1 |
3 | larga larga int | 8 | -2^63 a 2^63 – 1 |
Long long toma la memoria doble en comparación con long. Pero también puede ser diferente en varios sistemas. Su rango depende del tipo de aplicación. Los tamaños de bits mínimos utilizables garantizados para diferentes tipos de datos:
- carácter: 8
- corto: 16
- int: 16
- largo: 32
- largo largo: 64
El orden decreciente es: long long >=long>=int>=short>=char
Programa 1:
En varias plataformas de codificación de la competencia, las restricciones están entre 10 7 y 10 18 . A continuación se muestra el programa para entender el concepto:
C++
// C++ program to implement // the above approach #include <iostream> using namespace std; // Driver code int main() { // Value of p 10^5 int p = 100000; // Value of q 10^5 int q = 100000; int result = p * q; cout << result << endl; return 0; }
1410065408
Como arriba, la salida no es correcta ya que int no puede almacenar un valor 10 10 (fuera de su rango). En este caso, debe usarse long long.
Programa 2:
A continuación se muestra el programa C++ para demostrar cómo la conversión de int a long long afecta la salida:
C++
// C++ program to implement // the above approach #include <iostream> using namespace std; // Driver code int main() { // Value of p 10^5 int p = 100000; // Value of q 10^5 int q = 100000; long long int result = p * q; cout << result << endl; return 0; }
1410065408
Explicación: El programa anterior da el mismo resultado incluso después de convertir int a long long int porque al principio, el resultado se declara como long long. Pero antes de asignar el valor de la multiplicación de p y q, ya está desbordado. Ahora, para evitar la condición de desbordamiento , se requiere convertir el resultado int en int largo largo antes de asignar el valor del resultado para que no se produzca la condición de desbordamiento.
Programa 3:
A continuación se muestra el programa C++ para implementar el enfoque anterior:
C++
// C++ program to implement // the above approach #include <iostream> using namespace std; // Driver code int main() { // Value of p 10^5 int p = 100000; // Value of q 10^5 int q = 100000; long long int result = (long long int)p * q; cout << result << endl; return 0; }
10000000000
Explicación: después de esto, da la salida correcta, que es 10 10 , que se puede almacenar fácilmente en un tipo de datos largo ya que el rango es de hasta 10 18 .