- 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 语言库 - <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
广告