Стандартная библиотека 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 <stdio.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>Он предоставляет множество макросов, связанных с целочисленными типами и используемых для описания пределов различных типов данных. Эти макросы очень полезны для написания надежного и переносимого кода, поскольку позволяют программистам легко получать предельные значения типов данных на разных платформах.

Другие расширения