在C中确定数据类型(即int、char.等)的最小和最大可能值的函数是什么?

推荐答案

您需要使用limits.h,它提供以下常量(根据链接引用):

SCHAR_MIN      : minimum value for a signed char
SCHAR_MAX      : maximum value for a signed char
UCHAR_MAX      : maximum value for an unsigned char
CHAR_MIN       : minimum value for a char
CHAR_MAX       : maximum value for a char
SHRT_MIN       : minimum value for a short
SHRT_MAX       : maximum value for a short
USHRT_MAX      : maximum value for an unsigned short
INT_MIN        : minimum value for an int
INT_MAX        : maximum value for an int
UINT_MAX       : maximum value for an unsigned int
LONG_MIN       : minimum value for a long
LONG_MAX       : maximum value for a long
ULONG_MAX      : maximum value for an unsigned long
LLONG_MIN      : minimum value for a long long
LLONG_MAX      : maximum value for a long long
ULLONG_MAX     : maximum value for an unsigned long long
PTRDIFF_MIN    : minimum value of ptrdiff_t
PTRDIFF_MAX    : maximum value of ptrdiff_t
SIZE_MAX       : maximum value of size_t
SIG_ATOMIC_MIN : minimum value of sig_atomic_t
SIG_ATOMIC_MAX : maximum value of sig_atomic_t
WINT_MIN       : minimum value of wint_t
WINT_MAX       : maximum value of wint_t
WCHAR_MIN      : minimum value of wchar_t
WCHAR_MAX      : maximum value of wchar_t
CHAR_BIT       : number of bits in a char
MB_LEN_MAX     : maximum length of a multibyte character in bytes

其中,由于明显的原因省略了U*_MIN(任何无符号类型的最小值为0).

同样,float.hfloatdouble类型提供了限制:

FLT_MIN    : smallest normalised positive value of a float
FLT_MAX    : largest positive finite value of a float
DBL_MIN    : smallest normalised positive value of a double
DBL_MAX    : largest positive finite value of a double
LDBL_MIN   : smallest normalised positive value of a long double
LDBL_MAX   : largest positive finite value of a long double
FLT_DIG    : the number of decimal digits guaranteed to be preserved converting from text to float and back to text
DBL_DIG    : the number of decimal digits guaranteed to be preserved converting from text to double and back to text
LDBL_DIG   : the number of decimal digits guaranteed to be preserved converting from text to long double and back to text

浮点类型是围绕零对称的,所以最负的有限数是最正的有限数的反-例如float范围从-FLT_MAXFLT_MAX.

请注意,浮点类型只能精确地表示其范围内的一小部分有限的值.随着存储的绝对值变大,可以精确表示的相邻数字之间的间距也会变大.

C++相关问答推荐

无效使用未定义类型'structsquare'?

struct 上的OpenMP缩减

为静态库做准备中的奇怪行为

如何将字符**传递给需要常量字符指针的常量数组的函数

C指针概念分段故障

在移动数组元素时获得意外输出

如何只获取字符串的第一个单词,然后将其与c中的另一个单词进行比较?

将变量或参数打包到 struct /联合中是否会带来意想不到的性能损失?

类型定义 struct 与简单的类型定义 struct

仅从限制指针参数声明推断非混叠

判断系统命令返回值的正确方法

运行时错误:在索引数组时加载类型为';char';`的空指针

C";中的ANN运行时判断失败#2-变量outputLayer;周围的堆栈已损坏.运行后出错

不确定如何处理此编译错误

哪个首选包含第三个库S头文件?#INCLUDE;文件名或#INCLUDE<;文件名&>?

Malloc和对齐

解密Chrome加密密钥

C循环条件内的函数

段错误try 访问静态字符串,但仅有时取决于构建环境

strlen 可以是[[未排序]]吗?