
- C 標準庫
- C 語言庫 - 首頁
- C 語言庫 - <assert.h>
- C 語言庫 - <complex.h>
- C 語言庫 - <ctype.h>
- C 語言庫 - <errno.h>
- C 語言庫 - <fenv.h>
- C 語言庫 - <float.h>
- C 語言庫 - <inttypes.h>
- C 語言庫 - <iso646.h>
- C 語言庫 - <limits.h>
- C 語言庫 - <locale.h>
- C 語言庫 - <math.h>
- C 語言庫 - <setjmp.h>
- C 語言庫 - <signal.h>
- C 語言庫 - <stdalign.h>
- C 語言庫 - <stdarg.h>
- C 語言庫 - <stdbool.h>
- C 語言庫 - <stddef.h>
- C 語言庫 - <stdio.h>
- C 語言庫 - <stdlib.h>
- C 語言庫 - <string.h>
- C 語言庫 - <tgmath.h>
- C 語言庫 - <time.h>
- C 語言庫 - <wctype.h>
- C 標準庫資源
- C 語言庫 - 快速指南
- C 語言庫 - 有用資源
- C 語言庫 - 討論
- C 程式設計資源
- C 程式設計 - 教程
- C - 有用資源
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
廣告