INT_MAX e INT_MIN en C/C++ y Aplicaciones

La mayoría de las veces, en la programación competitiva, existe la necesidad de asignar la variable, el valor máximo o mínimo que puede contener el tipo de datos, pero recordar un número tan grande y preciso resulta ser un trabajo difícil. Por lo tanto, C++ tiene ciertas macros para representar estos números, de modo que estos puedan asignarse directamente a la variable sin tener que escribir el número entero.

Según el compilador y el estándar C++, es posible que deba incluir el archivo de encabezado <limits.h> o <climits> en su código fuente C o C++, respectivamente. Por lo tanto, es recomendable incluir este archivo de encabezado para usar las macros INT_MAX, INT_MIN. Para obtener más información sobre este archivo de encabezado, consulte este artículo

INT_MAX es una macro que especifica que una variable entera no puede almacenar ningún valor más allá de este límite. 
INT_MIN especifica que una variable entera no puede almacenar ningún valor por debajo de este límite.

Values of INT_MAX and INT_MIN may vary
from compiler to compiler. Following are
typical values in a compiler where integers
are stored using 32 bits.

Value of INT_MAX is +2147483647.
Value of INT_MIN is -2147483648.

CPP

// C++ program to print values of INT_MAX
// and INT_MIN
#include <bits/stdc++.h>
using namespace std;
int main()
{
    cout << INT_MAX << endl;
    cout << INT_MIN;
    return 0;
}

C

// C program to print values of INT_MAX
// and INT_MIN
// we have to include limits.h for results in C
#include <limits.h>
#include <stdio.h>
int main()
{
    printf("%d\n", INT_MAX);
    printf("%d", INT_MIN);
}
Producción

2147483647
-2147483648

Aplicaciones de INT_MAX e INT_MIN: 

1. Verifique el desbordamiento de enteros: 

CPP

// C++ code to check for Integer overflow while
// adding 2 numbers
#include <bits/stdc++.h>
 
// Function to check integer overflow
int check_overflow(int num1, int num2)
{
    // Checking if addition will cause overflow
    if (num1 > INT_MAX - num2)
        return -1;
 
    // No overflow occurred
    else
        return num1 + num2;
}
 
// Driver code
int main()
{
    // The sum of these numbers will equal INT_MAX
    // If any of them is incremented by 1, overflow
    // will occur
    int num1 = 2147483627;
    int num2 = 20;
 
    // Result is -1 if overflow occurred
    // Stores the sum, otherwise
    int result = check_overflow(num1, num2);
 
    // Overflow occurred
    if (result == -1)
        std::cout << "Integer overflow occurred";
 
    // No overflow
    else
        std::cout << result;
}

C

// C code to check for Integer overflow while
// adding 2 numbers
 
#include <stdio.h>
#include <limits.h>
 
// Function to check integer overflow
int check_overflow(int num1, int num2)
{
    // Checking if addition will cause overflow
    if (num1 > INT_MAX - num2)
        return -1;
 
    // No overflow occurred
    else
        return num1 + num2;
}
 
int main(void)
{
    // The sum of these numbers will be equivalent to INT_MAX
    // If any of them is incremented by 1, overflow will occur
   
    int num1 = 2147483627;
    int num2 = 20;
 
    // Result is -1 if overflow occurred
    // Stores the sum, otherwise
    int result = check_overflow(num1, num2);
 
    // Overflow occurred
    if (result == -1)
        printf("Integer overflow occurred");
 
    // No overflow
    else
        printf("%d", result);
}
 
// This code is contributed by sarajadhav12052009
Producción

2147483647

De manera similar, podemos verificar el desbordamiento al restar 2 números usando INT_MIN.

2. Cálculo de MIN en una array con elementos grandes 
Normalmente asignamos un valor alto a MIN para calcular el valor mínimo en una array. Pero si una array tiene elementos grandes, debemos asignar el valor más alto posible a la array.

A continuación se muestra la implementación de C++: 

CPP

// C++ code to compute MIN element
#include <bits/stdc++.h>
 
// Function to compute minimum element in array
int compute_min(int arr[], int n)
{
    // Assigning highest value
    int MIN = INT_MAX;
 
    // Traversing and updating MIN
    for (int i = 0; i < n; i++)
        MIN = std::min(MIN, arr[i]);
 
    // Printing MIN element
    std::cout << MIN;
}
 
// Driver code
int main()
{
    // array with MIN to compute
    int arr[] = { 2019403813, 2147389580, 2145837140,
                  2108938594, 2112076334 };
 
    // size of array
    int n = sizeof(arr) / sizeof(arr[0]);
 
    // Function call to compute MIN
    compute_min(arr, n);
}
Producción

2019403813

De manera similar, MAX se puede encontrar en una array de números grandes usando INT_MIN.

Este artículo es una contribución de Rohit Thapliyal . 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

Deja una respuesta

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