<limits.h> - C語言標準庫


limits.h頭中確定各種變數型別的各種屬性。在這個頭中定義的巨集限制的char,int和long型別,如各種變數的值。

這些限制指定一個變數,無法儲存任何值超越這些限制,例如一個無符號的字元最多可以儲存的最大值為255。

庫巨集

下面的值是特定於實現定義#define指令,但這些數值可能沒有任何比這裡給出更低(小)。

巨集 描述
CHAR_BIT 8 定義了一個位元組中的位元數。
SCHAR_MIN -127 定義最小值簽署的字元。
SCHAR_MAX 127 定義最大值簽署的字元。
UCHAR_MAX 255 定義unsigned char型別的最大值。
CHAR_MIN 0 char型別定義最小值,它的值將等於SCHAR_MIN如果char表示負值,否則為零。
CHAR_MAX 127 定義char型別的值,它的值將等於SCHAR_MAX的char代表負值,否則UCHAR_MAX,
MB_LEN_MAX 1 定義的最大位元組數多位元組字元。
SHRT_MIN -32767 定義一個短整型的最小值。
SHRT_MAX +32767 定義一個短整型的最大值。
USHRT_MAX 65535 定義一個無符號的短整型的最大值。
INT_MIN -32767 定義型別為int的最小值。
INT_MAX +32767 定義一個int的最大值。
UINT_MAX 65535 定義一個unsigned int的最大值。
LONG_MIN -2147483647 定義一個長整型的最小值。
LONG_MAX +2147483647 定義一個長整型的最大值。
ULONG_MAX 4294967295 定義一個無符號長整型的最大值。

例子

下面的例子顯示的幾個常數定義在limit.h檔案的用法。

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

int main()
{

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

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

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

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

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

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

讓我們編譯和執行上面的程式,這將產生以下結果:

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 = -32768
The maximum value of INT = 32767
The minimum value of CHAR = -128
The maximum value of CHAR = 127
The minimum value of LONG = -2147483648
The maximum value of LONG = 2147483647