9.5. Limits
Two header files <float.h>
and
<limits.h>
define several implementation specific
limits.
9.5.1. Limits.h
Table 9.1 gives the names declared, the allowable values,
and a comment on what they mean. For example, the
description of SHRT_MIN
shows that in a given implementation
the value must be less than or equal to −32767: this means
that for maximum portability a program cannot rely on short
variables being able to hold values more negative than
−32767. Implementations may choose to support values which
are more negative but must provide support for at least
−32767.
Name | Allowable value | Comment |
---|---|---|
CHAR_BIT |
(≥8) | bits in a char |
CHAR_MAX |
see note | max value of a char |
CHAR_MIN |
see note | min value of a char |
INT_MAX |
(≥+32767) | max value of an int |
INT_MIN |
(≤−32767) | min value of an int |
LONG_MAX |
(≥+2147483647) | max value of a long |
LONG_MIN |
(≤−2147483647) | min value of a long |
MB_LEN_MAX |
(≥1) | max number of bytes in a multibyte character |
SCHAR_MAX |
(≥+127) | max value of a signed char |
SCHAR_MIN |
(≤−127) | min value of a signed char |
SHRT_MAX |
(≥+32767) | max value of a short |
SHRT_MIN |
(≤−32767) | min value of a short |
UCHAR MAX |
(≥255U) | max value of an unsigned char |
UINT_MAX |
(≥65535U) | max value of an unsigned int |
ULONG_MAX |
(≥4294967295U) | max value of an unsigned long |
USHRT_MAX |
(≥65535U) | max value of an unsigned short |
Note: if the implementation treats chars as signed,
then the values of CHAR_MAX and CHAR_MIN are
the same as the equivalent SCHAR versions. If not, then
the value of CHAR_MIN is zero and the value of
CHAR_MAX is equal to the value of
UCHAR_MAX . |
<limits.h>
9.5.2. Float.h
For floating point numbers, the file <float.h>
contains a similar set of minimum values. (It is assumed that where no
minimum value is specified, there is either no minimum, or
the value depends on another value.)
Name | Allowable value | Comment |
---|---|---|
FLT_RADIX |
(≥2) | the radix of exponent representation |
DBL_DIG |
(≥10) | the number of digits of precision in a double |
DBL_EPSILON |
(≤1E−9) | minimum positive number such that 1.0 + x ≠ 1.0 |
DBL_MANT_DIG |
(—) | the number of base FLT_RADIX digits in the mantissa part
of a double |
DBL_MAX |
(≥1E+37) | max value of a double |
DBL_MAX_10_EXP |
(≥+37) | max value of exponent (base 10) of a double |
DBL_MAX_EXP |
(—) | max value of exponent (base FLT_RADIX )) of a
double |
DBL_MIN |
(≤1E−37) | min value of a double |
DBL_MIN_10_EXP |
(≤37) | minimum value of exponent (base 10) of a double |
DBL_MIN_EXP |
(—) | min value of exponent part of a double (base
FLT_RADIX ) |
FLT_DIG |
(≥6) | the number of digits of precision in a float |
FLT_EPSILON |
(≤1E−5) | minimum positive number such that 1.0 + x ≠ 1.0 |
FLT_MANT_DIG |
(—) | the number of base FLT_RADIX digits in the mantissa of a
float |
FLT_MAX |
(≥1E+37) | max value of a float |
FLT_MAX_10_EXP |
(≥+37) | max value (base 10) of exponent part of a float |
FLT_MAX_EXP |
(—) | max value (base FLT_RADIX ) of exponent part of a
float |
FLT_MIN |
(≤1E−37) | min value of a float |
FLT_MIN_10_EXP |
(≤−37) | min value (base 10) of exponent part of a float |
FLT_MIN_EXP |
(—) | min value (base FLT_RADIX ) of exponent part of a
float |
FLT_ROUNDS |
(0) |
affects rounding of floating point addition:
any other value is implementation defined. |
LDBL_DIG |
(≥10) | the number of digits of precision in a long double |
LDBL_EPSILON |
(≤1E−9) | minimum positive number such that 1.0 + x ≠= 1.0 |
LDBL_MANT_DIG |
(—) | the number of base FLT_RADIX digits in the mantissa part
of a long double |
LDBL_MAX |
(≥1E+37) | max value of a long double |
LDBL_MAX_10_EXP |
(≥+37) | max value of exponent (base 10) of a long double |
LDBL_MAX_EXP |
(—) | max value of exponent (base FLT_RADIX ) of a
long double |
LDBL_MIN |
(≤1E−37) | minimum value of a long double |
LDBL_MIN_10_EXP |
(≤−37) | min value of exponent part (base 10) of a
long double |
LDBL_MIN_EXP |
(—) | min value of exponent part of a long double (base
FLT_RADIX ) |
<float.h>