Поиск по сайту:

Использование INT_MAX и INT_MIN в C/C++


В этой статье мы рассмотрим использование INT_MAX и INT_MIN в C/C++.

На самом деле это полезные макросы, которые представляют максимальное и минимальное целочисленные значения.

Давайте посмотрим на это, используя несколько примеров.

Использование INT_MAX и INT_MIN

INT_MAX — это макрос, представляющий максимальное целочисленное значение. Точно так же INT_MIN представляет минимальное целочисленное значение.

Эти макросы определены в заголовочном файле , поэтому вы должны включить его.

#include <limits.h>

INT_MAX

INT_MIN

Обратите внимание, что любая целочисленная переменная должна находиться между INT_MIN и INT_MAX.

Обычно целые числа хранятся в виде 4 байтов (32 бита).

Это означает, что почти на всех машинах максимальное целочисленное значение будет 2^(31) - 1=+2147483647.

Минимальное целочисленное значение будет -(2^31)=-2147483648.

Давайте проверим это для нашей машины.

#include <stdio.h>
#include <limits.h>

int main() {
    printf("Maximum Integer Value: %d\n", INT_MAX);
    printf("Minimum Integer Value: %d\n", INT_MIN);
    return 0;
}

Выход

Maximum Integer Value: 2147483647
Minimum Integer Value: -2147483648

Действительно, мы получаем то, что предсказываем.

Давайте теперь возьмем другой пример, чтобы правильно предсказать любое целочисленное переполнение или потерю значимости.

#include <stdio.h>
#include <limits.h>

int main() {
    int value = 0;
    while (value >= 0) {
        // Check for overflow
        if (value == INT_MAX) {
            printf("value = %d. Possible overflow!\n", value);
        }
        value ++;
    }
    printf("Now, value = %d\n", value);
    value = 0;
    while (value <= 0) {
        // Check for underflow
        if (value == INT_MIN) {
            printf("value = %d. Possible underflow!\n", value);
        }
        value --;
    }
    printf("Now, value = %d\n", value);
    return 0;
}

Выход

value = 2147483647. Possible overflow!
Now, value = -2147483648
value = -2147483648. Possible underflow!
Now, value = 2147483647

Хотя это занимает несколько секунд, это действительно делает то, что мы ожидаем.

Целое число переполнится до INT_MIN и переполнится до INT_MAX.

Это полезно для обнаружения таких скачков значений.

Зачем нужны эти макросы?

Часто для определенных алгоритмов иногда необходимо инициализировать переменную как наименьшее/наибольшее значение.

Количество битов типа данных может отличаться в зависимости от машины.

Чтобы использование максимальных/минимальных значений было последовательным, было бы удобно, если бы все могли использовать одни и те же макросы!

Именно поэтому существуют такие виды макросов -

  • Чтобы избавить вас от необходимости запоминать фактические значения.
  • Используйте единые шаблоны программирования на всех компьютерах
  • Очень удобно использовать

Надеюсь, эти причины могут убедить вас использовать макросы такого рода всякий раз, когда вы создаете свою собственную библиотеку C/C++.

Заключение

В этой статье мы узнали об использовании макросов INT_MAX и INT_MIN в C/C++.

Для получения аналогичного контента просмотрите наш раздел учебника по программированию на C.

Рекомендации

  • страница cplusplus.com на climits