Стандартная библиотека C -<limits.h>
Введение
<limits.h>является заголовочным файлом в стандартной библиотеке C, определяющим пределы для различных типов данных. Эти макросы предоставляют информацию о целочисленных типах (char、short、int、longиlong longи т. д.) и максимальные и минимальные значения других типов данных.
Эти ограничения означают, что переменные не могут хранить значения, выходящие за эти пределы; например, unsigned может хранить максимальное значение 255.
Библиотечные макросы
Следующие значения определяются реализацией и задаются с помощью директивы #define; эти значения не должны быть меньше значений, приведённых ниже.
| Макрос | Описание | Значение |
|---|---|---|
| Символьные типы | ||
CHAR_BIT |
charЧисло битов типа |
Обычно 8 |
CHAR_MIN |
charМинимальное значение типа (знакового или беззнакового) |
-128 или 0 |
CHAR_MAX |
charМаксимальное значение типа (знакового или беззнакового) |
127 или 255 |
SCHAR_MIN |
signed charМинимальное значение типа |
-128 |
SCHAR_MAX |
signed charМаксимальное значение типа |
127 |
UCHAR_MAX |
unsigned charМаксимальное значение типа |
255 |
| Короткий целочисленный тип | ||
SHRT_MIN |
shortМинимальное значение типа |
-32768 |
SHRT_MAX |
shortМаксимальное значение типа |
32767 |
USHRT_MAX |
unsigned shortМаксимальное значение типа |
65535 |
| Целочисленные типы | ||
INT_MIN |
intМинимальное значение типа |
-2147483648 |
INT_MAX |
intМаксимальное значение типа |
2147483647 |
UINT_MAX |
unsigned intМаксимальное значение типа |
4294967295 |
| Длинный целочисленный тип | ||
LONG_MIN |
longМинимальное значение типа |
-9223372036854775808L |
LONG_MAX |
longМаксимальное значение типа |
9223372036854775807L |
ULONG_MAX |
unsigned longМаксимальное значение типа |
18446744073709551615UL |
| Целочисленный тип long long | ||
LLONG_MIN |
long longМинимальное значение типа |
-9223372036854775808LL |
LLONG_MAX |
long longМаксимальное значение типа |
9223372036854775807LL |
ULLONG_MAX |
unsigned long longМаксимальное значение типа |
18446744073709551615ULL |
Пример
В следующем примере демонстрируется использование некоторых констант, определённых в файле limit.h.
Пример
#include <limits.h>
int main() {
printf("Символьные типы:\n");
printf("CHAR_BIT: %d\n", CHAR_BIT);
printf("CHAR_MIN: %d\n", CHAR_MIN);
printf("CHAR_MAX: %d\n", CHAR_MAX);
printf("SCHAR_MIN: %d\n", SCHAR_MIN);
printf("SCHAR_MAX: %d\n", SCHAR_MAX);
printf("UCHAR_MAX: %u\n", UCHAR_MAX);
printf("\nКороткие целочисленные типы:\n");
printf("SHRT_MIN: %d\n", SHRT_MIN);
printf("SHRT_MAX: %d\n", SHRT_MAX);
printf("USHRT_MAX: %u\n", USHRT_MAX);
printf("\nЦелочисленные типы:\n");
printf("INT_MIN: %d\n", INT_MIN);
printf("INT_MAX: %d\n", INT_MAX);
printf("UINT_MAX: %u\n", UINT_MAX);
printf("\nДлинные целочисленные типы:\n");
printf("LONG_MIN: %ld\n", LONG_MIN);
printf("LONG_MAX: %ld\n", LONG_MAX);
printf("ULONG_MAX: %lu\n", ULONG_MAX);
printf("\nЦелочисленные типы long long:\n");
printf("LLONG_MIN: %lld\n", LLONG_MIN);
printf("LLONG_MAX: %lld\n", LLONG_MAX);
printf("ULLONG_MAX: %llu\n", ULLONG_MAX);
return 0;
}
Давайте скомпилируем и запустим вышеуказанную программу, которая выдаст следующие результаты:
Character types: CHAR_BIT: 8 CHAR_MIN: -128 CHAR_MAX: 127 SCHAR_MIN: -128 SCHAR_MAX: 127 UCHAR_MAX: 255 Short integer types: SHRT_MIN: -32768 SHRT_MAX: 32767 USHRT_MAX: 65535 Integer types: INT_MIN: -2147483648 INT_MAX: 2147483647 UINT_MAX: 4294967295 Long integer types: LONG_MIN: -9223372036854775808 LONG_MAX: 9223372036854775807 ULONG_MAX: 18446744073709551615 Long long integer types: LLONG_MIN: -9223372036854775808 LLONG_MAX: 9223372036854775807 ULLONG_MAX: 18446744073709551615
<limits.h>Он предоставляет множество макросов, связанных с целочисленными типами и используемых для описания пределов различных типов данных. Эти макросы очень полезны для написания надежного и переносимого кода, поскольку позволяют программистам легко получать предельные значения типов данных на разных платформах.