Учебники

Библиотека C —

Заголовок limit.h определяет различные свойства различных типов переменных. Макросы, определенные в этом заголовке, ограничивают значения различных типов переменных, таких как char, int и long.

Эти ограничения указывают на то, что переменная не может хранить любое значение за пределами этих ограничений, например, беззнаковый символ может хранить до максимального значения 255.

Макросы библиотеки

Следующие значения зависят от реализации и определяются с помощью директивы #define, но эти значения могут быть не ниже указанных здесь.

макрос Значение Описание
CHAR_BIT 8 Определяет количество бит в байте.
SCHAR_MIN -128 Определяет минимальное значение для подписанного символа.
SCHAR_MAX +127 Определяет максимальное значение для подписанного символа.
UCHAR_MAX 255 Определяет максимальное значение для беззнакового символа.
CHAR_MIN -128 Определяет минимальное значение для типа char, и его значение будет равно SCHAR_MIN, если char представляет отрицательные значения, в противном случае — ноль.
CHAR_MAX +127 Определяет значение для типа char, и его значение будет равно SCHAR_MAX, если char представляет отрицательные значения, в противном случае UCHAR_MAX.
MB_LEN_MAX 16 Определяет максимальное количество байтов в многобайтовом символе.
SHRT_MIN -32768 Определяет минимальное значение для короткого int.
SHRT_MAX +32767 Определяет максимальное значение для короткого int.
USHRT_MAX 65535 Определяет максимальное значение для беззнакового короткого типа int.
INT_MIN -2147483648 Определяет минимальное значение для int.
INT_MAX +2147483647 Определяет максимальное значение для int.
UINT_MAX 4294967295 Определяет максимальное значение для беззнакового целого.
LONG_MIN -9223372036854775808 Определяет минимальное значение для длинного int.
LONG_MAX +9223372036854775807 Определяет максимальное значение для длинного int.
ULONG_MAX 18446744073709551615 Определяет максимальное значение для беззнакового long int.

пример

В следующем примере показано использование нескольких констант, определенных в файле limit.h .

Live Demo

#include <stdio.h>
#include <limits.h>

int main() {

   printf("The number of bits in a byte %d\n", CHAR_BIT);

   printf("The minimum value of SIGNED CHAR = %d\n", SCHAR_MIN);
   printf("The maximum value of SIGNED CHAR = %d\n", SCHAR_MAX);
   printf("The maximum value of UNSIGNED CHAR = %d\n", UCHAR_MAX);

   printf("The minimum value of SHORT INT = %d\n", SHRT_MIN);
   printf("The maximum value of SHORT INT = %d\n", SHRT_MAX); 

   printf("The minimum value of INT = %d\n", INT_MIN);
   printf("The maximum value of INT = %d\n", INT_MAX);

   printf("The minimum value of CHAR = %d\n", CHAR_MIN);
   printf("The maximum value of CHAR = %d\n", CHAR_MAX);

   printf("The minimum value of LONG = %ld\n", LONG_MIN);
   printf("The maximum value of LONG = %ld\n", LONG_MAX);
  
   return(0);
}

Давайте скомпилируем и запустим вышеуказанную программу, которая даст следующий результат —