数据类型的极限值(范围与精度)
极限指的是每种数据类型在内存中能存储的最大/最小(上限/下限)等边界值。每个整数类型都有一个可存储的极限值,这些极限值定义在 limits.h 头文件中;浮点数类型的极限值和精度定义在 float.h 头文件中。
1. 整数类型的极限值
带符号整数类型有上下限,无符号整数类型的下限固定为 0(无特定负符号,只需关注上限)。
整数极限符号对照表(带符号):
| 类型 | 下限符号 | 上限符号 |
|---|---|---|
char | CHAR_MIN | CHAR_MAX |
short | SHRT_MIN | SHRT_MAX |
int | INT_MIN | INT_MAX |
long | LONG_MIN | LONG_MAX |
long long | LLONG_MIN | LLONG_MAX |
无符号整数上限符号:
UCHAR_MAX、USHRT_MAX、UINT_MAX、ULONG_MAX、ULLONG_MAX
使用要求:必须在源文件顶部包含 #include <limits.h>。
初始化示例:int number = INT_MAX;
2. 浮点数类型的极限与精度
浮点数的极限包含最小非零值(最接近0的非零正数)和最大值,同时提供十进制数字精度(有效位数)。需包含 #include <float.h>。
主要符号:FLT_MIN / FLT_MAX / FLT_DIG(float)、DBL_MIN / DBL_MAX / DBL_DIG(double)、LDBL_MIN / LDBL_MAX / LDBL_DIG(long double)。
3. 综合代码示例
#include <stdio.h> /* 用于输入输出 */
#include <limits.h> /* 整数类型极限 */
#include <float.h> /* 浮点类型极限 */
int main(void)
{
printf("char类型的变量存储从%d到%d的值",CHAR_MIN,CHAR_MAX);
printf("\n unsigned char类型的变量存储0到%u之间的值",UCHAR_MAX);
printf("\n类型为short store值的变量,从%d到%d",SHRT_MIN,SHRT_MAX);
printf("\n类型为unsigned short store values from 0 to%u",USHRT_MAX);
printf("\n类型为int的变量存储值从%d到%d",INT_MIN,INT_MAX);
printf("\n unsigned int类型变量存储0到%u的值",UINT_MAX);
printf("\n long store值从%ld到%ld",LONG_MIN,LONG_MAX);
printf("\n类型为unsigned long store value from 0 to%lu",ULONG_MAX);
printf("\n long long store值类型的变量,从%lld到%lld",LLONG_MIN,LLONG_MAX);
printf("\n类型为unsigned long long store value from 0 to%llu",ULLONG_MAX);
printf("\n\n float类型的最小非零值大小为%.3e",FLT_MIN);
printf("\n类型float的最大值的大小是%.3e",FLT_MAX);
printf("\n double类型的最小非零值的大小为%.3e",DBL_MIN);
printf("\n double类型最大值的大小为%.3e",DBL_MAX);
printf("\n long double类型的最小非零值的大小为%.3Le",LDBL_MIN);
printf("\n long double类型的最大值的大小为%.3Le\n",LDBL_MAX);
printf("\n float类型的变量提供%u个十进制数字精度。",FLT_DIG);
printf("\n double类型的变量提供%u个十进制数字精度。",DBL_DIG);
printf("\n long double类型的变量提供%u个十进制数字精度。",LDBL_DIG);
return 0;
}Code language: PHP (php)
4. 输出效果与格式说明
运行上述代码会输出各类型的范围(如 int 从 -2147483648 到 2147483647)、浮点极值(如 float 最大值约 3.403e+38)及精度(float 6位、double 15位、long double 18位)。
核心格式说明符:
- 整数:
%d(int)、%u(无符号)、%ld(long)、%lu(无符号long)、%lld(long long)、%llu(无符号long long)。 - 浮点数:
%.3e或%e表示指数(科学计数法)表现形式(如1.175e-038);long double需加修饰符L(如%.3Le)。 - 精度:使用
%u输出十进制精度位数。
Previous: const 常量
Next: sizeof 运算符