c語言標準庫詳解(十五):limits.h與float.h

c語言標準庫詳解(十五):<limits.h>與<float.h>

概述

<limits.h>

頭文件<limits.h>定義了一些表示整型大小的常量。以下所列的值是可接受的最小值,在實際系統中可以使用更大的值。

備註
CHAR_BIT 8 char 類型的位數
CHAR_MAX UCHAR_MAX 或 SCHAR_MAX char 類型的最大值
CHAR_MIN 0 或 SCHAR_MIN char 類型的最小值
INT_MAX 32767 int 類型的最大值
INT_MIN -32767 int 類型的最小值
LONG_MAX 2147483647 long 類型的最大值
LONG_MIN -2147483647 long 類型的最小值
SCHAR_MAX +127 signed char 類型的最大值
SCHAR_MIN -127 signed char 類型的最小值
SHRT_MAX +32767 short 類型的最大值
SHRT_MIN -32767 short 類型的最小值
UCHAR_MAX 255 unsigned char 類型的最大值
UINT_MAX 65535 unsigend int 類型的最大值
ULONG_MAX 4294967295 unsigned long 類型的最大值
USHRT_MAX 65535 unsigned short 類型的最大值

<float.h>

下表列出的名字是<float.h>的一個子集,它們是與浮點算術運算相關的一些常量。給出的每個值代表相應量的最小取值。各個實現可以定義適當的值。

備註
FLT_RADIX 2 指數表示的基數,例如 2、16
FLT_ROUNDS -1(無法確定);0(趨向於0);1(趨向最近的值);2(趨向於正無窮);3(趨向於負無窮) 加法的浮點舍入模式
FLT_DIG 6 表示精度的十進制數字
FLT_EPSILON 1E-5 最小的數 x,x 滿足:1.0 + x ≠ 1.0
FLT_MANT_DIG - 尾數中的數(以 FLT_RADIX 爲基數)
FLT_MAX 1E+37 最大的浮點數
FLT_MAX_EXP - 最大的數 n,n 滿足 FLT_RADIX^n-1 仍是可表示的
FLT_MIN 1E-37 最小的規格化浮點數
FLT_MIN_EXP - 最小的數 n,n 滿足:10^n是一個規格化數
DBL_DIG 10 表示精度的十進制數字
DBL_EPSILON 1E-9 最小的數 x,x 滿足:1.0 + x ≠ 1.0
DBL_MANT_DIG - 尾數中的數(以 FLT_RADIX 爲基數)
DBL_MAX 1E+37 最大的雙精度浮點數
DBL_MAX_EXP - 最大的數 n,n 滿足 FLT_RADIX^n-1 仍是可表示的
DBL_MIN 1E-37 最小的規格化雙精度浮點數
DBL_MIN_EXP - 最小的數 n,n 滿足:10n是一個規格化數

示例

<limits.h>

代碼:

#include <stdio.h>
#include <limits.h>
int main()
{
   printf("The number of bits in a byte %d\n", CHAR_BIT);
   printf("The minimum value of SIGNED CHAR = %d\n", SCHAR_MIN);
   printf("The maximum value of SIGNED CHAR = %d\n", SCHAR_MAX);
   printf("The maximum value of UNSIGNED CHAR = %d\n", UCHAR_MAX);
   printf("The minimum value of SHORT INT = %d\n", SHRT_MIN);
   printf("The maximum value of SHORT INT = %d\n", SHRT_MAX); 
   printf("The minimum value of INT = %d\n", INT_MIN);
   printf("The maximum value of INT = %d\n", INT_MAX);
   printf("The minimum value of CHAR = %d\n", CHAR_MIN);
   printf("The maximum value of CHAR = %d\n", CHAR_MAX);
   printf("The minimum value of LONG = %ld\n", LONG_MIN);
   printf("The maximum value of LONG = %ld\n", LONG_MAX); 
   return(0);
}

輸出:

PS G:\CSAPP>  & 'c:\Users\swy\.vscode\extensions\ms-vscode.cpptools-0.27.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-mq52rrfg.0x4' '--stdout=Microsoft-MIEngine-Out-ip53akbp.xpk' '--stderr=Microsoft-MIEngine-Error-w2wgdudi.u2t' '--pid=Microsoft-MIEngine-Pid-2z44vy4h.eqv' '--dbgExe=G:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gdb.exe' '--interpreter=mi'
The number of bits in a byte 8
The minimum value of SIGNED CHAR = -128
The maximum value of SIGNED CHAR = 127
The maximum value of UNSIGNED CHAR = 255
The minimum value of SHORT INT = -32768
The maximum value of SHORT INT = 32767
The minimum value of INT = -2147483648
The maximum value of INT = 2147483647
The minimum value of CHAR = -128
The maximum value of CHAR = 127
The minimum value of LONG = -2147483648
The maximum value of LONG = 2147483647
PS G:\CSAPP>

<float.h>

代碼:

#include <stdio.h>
#include <float.h>
int main()
{
   printf("The maximum value of float = %.10e\n", FLT_MAX);
   printf("The minimum value of float = %.10e\n", FLT_MIN);
   printf("The number of digits in the number = %.10e\n", FLT_MANT_DIG);
}

輸出:

PS G:\CSAPP>  & 'c:\Users\swy\.vscode\extensions\ms-vscode.cpptools-0.27.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-vvxt3sdn.m45' '--stdout=Microsoft-MIEngine-Out-lxfp3hgw.ny4' '--stderr=Microsoft-MIEngine-Error-uyop3yxf.gya' '--pid=Microsoft-MIEngine-Pid-flbfwpeh.hj3' '--dbgExe=G:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gdb.exe' '--interpreter=mi' 
The maximum value of float = 3.4028234664e+038
The minimum value of float = 1.1754943508e-038
The number of digits in the number = 1.1857575500e-322
PS G:\CSAPP> 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章