极限值

数据类型的极限值(范围与精度)

极限指的是每种数据类型在内存中能存储的最大/最小(上限/下限)等边界值。每个整数类型都有一个可存储的极限值,这些极限值定义在 limits.h 头文件中;浮点数类型的极限值和精度定义在 float.h 头文件中。

1. 整数类型的极限值

带符号整数类型有上下限,无符号整数类型的下限固定为 0(无特定负符号,只需关注上限)。

整数极限符号对照表(带符号):

类型下限符号上限符号
charCHAR_MINCHAR_MAX
shortSHRT_MINSHRT_MAX
intINT_MININT_MAX
longLONG_MINLONG_MAX
long longLLONG_MINLLONG_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 输出十进制精度位数。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注