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;
}
См. также
Дополнительные источники
- Enquire: Программа для автоматической генерации limits.h, также проверяющая корректность значений в уже существующем limits.h
Ссылки