Использование 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