limits.h — заголовочный файл стандартной библиотеки общего назначения языка программирования Си, который включает определения характеристик общих типов переменных. Их значения зависят от целевой аппаратной платформы и используемого компилятора языка.
Константы-члены
правитьКолонка «минимальное значение диапазона» содержит минимумы из возможного диапазона для константы данного типа, как это указано в стандарте. Иногда значения _MIN
представляют минимумы диапазона, представимые в виде редко используемого обратного кода и знакового диапазона. Большинство реализаций будет иметь больший диапазон по крайней мере для некоторых из этих чисел, например:
- Реализации дополнительного кода имеют
SCHAR_MIN
равным −128 (аналогично для всех остальных значений_MIN
). - 32-битные реализации устанавливают
INT_MAX
равным 2 147 483 647 (а также дляINT_MIN
иUINT_MAX
) - Реализации с поддержкой Юникода устанавливают
MB_LEN_MAX
4 или более. - Многие ЦСП имеют
CHAR_BIT
равным 16 или более[1][2].
Имя | Описание | Типичное значение 32-битной выполняемой/компилируемой программы (с 1995 и сейчас) |
Типичное значение 64-битной выполняемой/компилируемой программы (с 2008(?)) |
Стандартный минимум или максимум диапазона значений по ANSI |
---|---|---|---|---|
CHAR_BIT |
Число бит в байте | 8 | 8 | ≥ 8 |
SCHAR_MIN |
Минимальное значение для знакового char | −128 | −128 | ≤ −127 |
SCHAR_MAX |
Максимальное значение для знакового char | 127 | 127 | ≥ 127 |
UCHAR_MAX |
Максимальное значение для беззнакового char | 255 | 255 | ≥ 255 |
CHAR_MIN |
Минимальное значение для char | −128 | −128 | ≤ −127 (если char представлено какзнаковый char ; иначе 0)
|
CHAR_MAX |
Максимальное значение для char | 127 | 127 | ≥ 127 (если char представлено какзнаковый char ; иначе 255)
|
MB_LEN_MAX |
Максимальная многобайтовая длина символа по всем локалям | различается, обычно от 4 | различается, обычно от 4 | ≥ 1 |
SHRT_MIN |
Минимальное значение для short int | −32768 | −32768 | ≤ −32767 |
SHRT_MAX |
Максимальное значение для short int | 32767 | 32767 | ≥ 32767 |
USHRT_MAX |
Максимальное значение для беззнакового short int | 65535 | 65535 | ≥ 65535 |
INT_MIN |
Минимальное значение для int | −2147483648 | −2147483648 | ≤ −32767 |
INT_MAX |
Максимальное значение для int | 2147483647 | 2147483647 | ≥ 32767 |
UINT_MAX |
Максимальное значение для беззнакового int | 4294967295 | 4294967295 | ≥ 65535 |
LONG_MIN |
Минимальное значение для long int | −2147483648 | −9223372036854775808 | ≤ −2147483647 |
LONG_MAX |
Максимальное значение для long int | 2147483647 | 9223372036854775807 | ≥ 2147483647 |
ULONG_MAX |
Максимальное значение для беззнакового long int | 4294967295 | 18446744073709551615 | ≥ 4294967295 |
LLONG_MIN |
Минимальное значение для long long int | −9223372036854775808 | −9223372036854775808 | ≤ −9223372036854775807 |
LLONG_MAX |
Максимальное значение для long long int | 9223372036854775807 | 9223372036854775807 | ≥ 9223372036854775807 |
ULLONG_MAX |
Максимальное значение для беззнакового long long int | 18446744073709551615 | 18446744073709551615 | ≥ 18446744073709551615 |
Пример 1
править#include <stdio.h>
#include <limits.h>
int main (void)
{
if (CHAR_MAX==UCHAR_MAX) {
printf("This machine uses unsigned char by default\n");
} else {
printf("This machine uses signed char by default\n");
}
return 0;
}
Пример 2
править#include <limits.h>
#include <locale.h>
#include <stdio.h>
int main(void)
{
setlocale(LC_ALL, "RUS");
printf("Максимальное значение типа int в этой системе составляет %d\n", INT_MAX);
return 0;
}
См. также
править- Стандартная библиотека языка Си
- float.h — Ограничение чисел с плавающей запятой
Дополнительные источники
править- Enquire: Программа для автоматической генерации limits.h, также проверяющая корректность значений в уже существующем limits.h
Ссылки
правитьlimits.h
— основные определения, The Single UNIX® Specification, выпуск 7 от The Open Group (англ.)- Руководство по Си--2.5 limits.h, доступно по состоянию на сентябрь 2006.