Biblioteka C - <limits.h>

Plik limits.hnagłówek określa różne właściwości różnych typów zmiennych. Makra zdefiniowane w tym nagłówku ograniczają wartości różnych typów zmiennych, takich jak char, int i long.

Te limity określają, że zmienna nie może przechowywać żadnej wartości poza tymi limitami, na przykład znak bez znaku może przechowywać do maksymalnej wartości 255.

Biblioteka makr

Poniższe wartości są specyficzne dla implementacji i zdefiniowane za pomocą dyrektywy #define, ale wartości te nie mogą być niższe niż podane tutaj.

Makro Wartość Opis
CHAR_BIT 8 Określa liczbę bitów w bajcie.
SCHAR_MIN -128 Określa minimalną wartość podpisanego znaku.
SCHAR_MAX +127 Określa maksymalną wartość podpisanego znaku.
UCHAR_MAX 255 Określa maksymalną wartość dla znaku bez znaku.
CHAR_MIN -128 Definiuje minimalną wartość dla typu char, a jego wartość będzie równa SCHAR_MIN, jeśli char reprezentuje wartości ujemne, w przeciwnym razie zero.
CHAR_MAX +127 Definiuje wartość dla typu char i jego wartość będzie równa SCHAR_MAX, jeśli char reprezentuje wartości ujemne, w przeciwnym razie UCHAR_MAX.
MB_LEN_MAX 16 Określa maksymalną liczbę bajtów w znaku wielobajtowym.
SHRT_MIN -32768 Definiuje minimalną wartość dla krótkiego int.
SHRT_MAX +32767 Określa maksymalną wartość dla krótkiego int.
USHRT_MAX 65535 Definiuje maksymalną wartość dla nieoznaczonych krótkich int.
INT_MIN -2147483648 Definiuje minimalną wartość int.
INT_MAX +2147483647 Określa maksymalną wartość dla int.
UINT_MAX 4294967295 Określa maksymalną wartość dla bez znaku int.
LONG_MIN -9223372036854775808 Definiuje minimalną wartość dla długich int.
LONG_MAX +9223372036854775807 Określa maksymalną wartość dla długich int.
ULONG_MAX 18446744073709551615 Definiuje maksymalną wartość dla unsigned long int.

Przykład

Poniższy przykład pokazuje użycie kilku stałych zdefiniowanych w limits.h plik.

#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);
}

Skompilujmy i uruchommy powyższy program, który da następujący wynik -

The number of bits in a byte 8
The minimum value of SIGNED CHAR = -128
The maximum value of SIGNED CHAR = 127
The maximum value of UNSIGNED CHAR = 255
The minimum value of SHORT INT = -32768
The maximum value of SHORT INT = 32767
The minimum value of INT = -2147483648
The maximum value of INT = 2147483647
The minimum value of CHAR = -128
The maximum value of CHAR = 127
The minimum value of LONG = -9223372036854775808
The maximum value of LONG = 9223372036854775807