C 語言庫 - <limits.h>



C 語言庫的 limits.h 標頭檔案定義了不同變數型別的各種屬性。在此標頭檔案中定義的宏限制了各種變數型別(如 char、int 和 long)的值。

這些限制指定變數不能儲存超出這些限制的任何值,例如,無符號字元最多可以儲存 255 的最大值。

<limits.h> 庫宏

以下值是特定於實現的,並使用 #define 指令定義。但是,這些值可能不低於給定值。

描述
CHAR_BIT 8 定義一個位元組中的位數。
SCHAR_MIN -128 定義有符號 char 的最小值。
SCHAR_MAX +127 定義有符號 char 的最大值。
UCHAR_MAX 255 定義無符號 char 的最大值。
CHAR_MIN -128 定義 char 型別的最小值,如果 char 表示負值,則其值等於 SCHAR_MIN,否則為零。
CHAR_MAX +127 定義 char 型別的最大值,如果 char 表示負值,則其值等於 SCHAR_MAX,否則為 UCHAR_MAX。
MB_LEN_MAX 16 定義多位元組字元中的最大位元組數。
SHRT_MIN -32768 定義 short int 的最小值。
SHRT_MAX +32767 定義 short int 的最大值。
USHRT_MAX 65535 定義無符號 short int 的最大值。
INT_MIN -2147483648 定義 int 的最小值。
INT_MAX +2147483647 定義 int 的最大值。
UINT_MAX 4294967295 定義無符號 int 的最大值。
LONG_MIN -9223372036854775808 定義 long int 的最小值。
LONG_MAX +9223372036854775807 定義 long int 的最大值。
ULONG_MAX 18446744073709551615 定義無符號 long int 的最大值。

請注意,以上宏幫助開發人員編寫高效的程式碼,這些程式碼可以在不同的平臺和編譯器上始終如一地工作。

示例 1

以下是顯示 limits.h 標頭檔案中各種宏的範圍值的 C 語言庫基本程式。

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

int main() {
   printf("The value of CHAR_BIT: %d\n", CHAR_BIT);
   printf("The value of SCHAR_MIN: %d\n", SCHAR_MIN);
   printf("The value of SCHAR_MAX: %d\n", SCHAR_MAX);
   printf("The value of UCHAR_MAX: %u\n", UCHAR_MAX);
   printf("The value of CHAR_MIN: %d\n", CHAR_MIN);
   printf("The value of CHAR_MAX: %d\n", CHAR_MAX);
   printf("The value of MB_LEN_MAX: %d\n", MB_LEN_MAX);
   printf("The value of SHRT_MIN: %d\n", SHRT_MIN);
   printf("The value of SHRT_MAX: %d\n", SHRT_MAX);
   printf("The value of USHRT_MAX: %u\n", USHRT_MAX);
   printf("The value of INT_MIN: %d\n", INT_MIN);
   printf("The value of INT_MAX: %d\n", INT_MAX);
   printf("The value of UINT_MAX: %u\n", UINT_MAX);
   printf("The value of LONG_MIN: %ld\n", LONG_MIN);
   printf("The value of LONG_MAX: %ld\n", LONG_MAX);
   printf("The value of ULONG_MAX: %lu\n", ULONG_MAX);
   return 0;
}

輸出

執行以上程式碼後,我們將得到以下結果:

The value of CHAR_BIT: 8
The value of SCHAR_MIN: -128
The value of SCHAR_MAX: 127
The value of UCHAR_MAX: 255
The value of CHAR_MIN: -128
The value of CHAR_MAX: 127
The value of MB_LEN_MAX: 16
The value of SHRT_MIN: -32768
The value of SHRT_MAX: 32767
The value of USHRT_MAX: 65535
The value of INT_MIN: -2147483648
The value of INT_MAX: 2147483647
The value of UINT_MAX: 4294967295
The value of LONG_MIN: -9223372036854775808
The value of LONG_MAX: 9223372036854775807
The value of ULONG_MAX: 18446744073709551615

示例 2

在此示例中,我們說明了查詢最小值和最大值的程式。

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

int main() {
   int input[] = {89, 5, 21, 10, 45, 31, 98};
   int n = sizeof(input) / sizeof(input[0]);

   // Initialization of macros
   int min_value = INT_MAX;
   int max_value = INT_MIN;
   
   // loop iteration for min and max value
   for (int i = 0; i < n; ++i) {
       if (input[i] < min_value) {
           min_value = input[i];
       }
       if (input[i] > max_value) {
           max_value = input[i];
       }
   }
   // Display the result
   printf("Minimum value: %d\n", min_value);
   printf("Maximum value: %d\n", max_value);

   return 0;
}

輸出

執行以上程式碼後,我們將得到以下結果:

Minimum value: 5
Maximum value: 98

示例 3

在下面程式中,初始化 limit 宏(CHAR_MIN/MAX)以從給定字串生成字元的最小和最大長度。

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

int main() {
   char* char_input[] = {"RUSSIA", "UK", "INDIA", "NEWYORK", "INDONESIA", "DUBAI"};
   int num_strings = sizeof(char_input) / sizeof(char_input[0]);

   // Initialization of CHAR macros
   int min_length = CHAR_MAX;
   int max_length = CHAR_MIN;

   for (int i = 0; i < num_strings; ++i) {
       int current_length = strlen(char_input[i]);
       if (current_length < min_length) {
           min_length = current_length;
       }
       if (current_length > max_length) {
           max_length = current_length;
       }
   }

   printf("Minimum length of characters: %d\n", min_length);
   printf("Maximum length of characters: %d\n", max_length);

   return 0;
}

輸出

以上程式碼產生以下結果:

Minimum length of characters: 2
Maximum length of characters: 9
廣告