Data type constants
Data type constants are implementation-dependent ranges of values allowed for integral and floating-point data types.
Integral type constants
These constants give the ranges for the integral data types. To use these constants, include the limits.h header in your source file:
#include <limits.h>
Note
The /J
compiler option changes the default char
type from signed char
to unsigned char
.
Constant | Value | Description |
---|---|---|
CHAR_BIT |
8 | Number of bits in a char |
SCHAR_MIN |
(-128) | Minimum signed char value |
SCHAR_MAX |
127 | Maximum signed char value |
UCHAR_MAX |
255 (0xff) | Maximum unsigned char value |
CHAR_MIN |
(-128) (0 if /J option used) |
Minimum char value |
CHAR_MAX |
127 (255 if /J option used) |
Maximum char value |
MB_LEN_MAX |
5 | Maximum number of bytes in multibyte char |
SHRT_MIN |
-32768 | Minimum signed short value |
SHRT_MAX |
32767 | Maximum signed short value |
USHRT_MAX |
65535 (0xffff) | Maximum unsigned short value |
INT_MIN |
(-2147483647 - 1) | Minimum signed int value |
INT_MAX |
2147483647 | Maximum signed int value |
UINT_MAX |
4294967295 (0xffffffff) | Maximum unsigned int value |
LONG_MIN |
(-2147483647L - 1) | Minimum signed long value |
LONG_MAX |
2147483647L | Maximum signed long value |
ULONG_MAX |
4294967295UL (0xfffffffful) | Maximum unsigned long value |
LLONG_MIN |
(-9223372036854775807LL - 1) | Minimum signed long long or __int64 value |
LLONG_MAX |
9223372036854775807LL | Maximum signed long long or __int64 value |
ULLONG_MAX |
0xffffffffffffffffull | Maximum unsigned long long value |
_I8_MIN |
(-127i8 - 1) | Minimum signed 8-bit value |
_I8_MAX |
127i8 | Maximum signed 8-bit value |
_UI8_MAX |
0xffui8 | Maximum unsigned 8-bit value |
_I16_MIN |
(-32767i16 - 1) | Minimum signed 16-bit value |
_I16_MAX |
32767i16 | Maximum signed 16-bit value |
_UI16_MAX |
0xffffui16 | Maximum unsigned 16-bit value |
_I32_MIN |
(-2147483647i32 - 1) | Minimum signed 32-bit value |
_I32_MAX |
2147483647i32 | Maximum signed 32-bit value |
_UI32_MAX |
0xffffffffui32 | Maximum unsigned 32-bit value |
_I64_MIN |
(-9223372036854775807 - 1) | Minimum signed 64-bit value |
_I64_MAX |
9223372036854775807 | Maximum signed 64-bit value |
_UI64_MAX |
0xffffffffffffffffui64 | Maximum unsigned 64-bit value |
_I128_MIN |
(-170141183460469231731687303715884105727i128 - 1) | Minimum signed 128-bit value |
_I128_MAX |
170141183460469231731687303715884105727i128 | Maximum signed 128-bit value |
_UI128_MAX |
0xffffffffffffffffffffffffffffffffui128 | Maximum unsigned 128-bit value |
SIZE_MAX |
same as _UI64_MAX if _WIN64 is defined, or UINT_MAX |
Maximum native integer size |
RSIZE_MAX |
same as (SIZE_MAX >> 1) |
Maximum secure library integer size |
Floating-point type constants
The following constants give the range and other characteristics of the long double
, double
and float
data types. To use these constants, include the float.h header in your source file:
#include <float.h>
Constant | Value | Description |
---|---|---|
DBL_DECIMAL_DIG |
17 | # of decimal digits of rounding precision |
DBL_DIG |
15 | # of decimal digits of precision |
DBL_EPSILON |
2.2204460492503131e-016 | Smallest such that 1.0 + DBL_EPSILON != 1.0 |
DBL_HAS_SUBNORM |
1 | Type supports subnormal (denormal) numbers |
DBL_MANT_DIG |
53 | # of bits in significand (mantissa) |
DBL_MAX |
1.7976931348623158e+308 | Maximum value |
DBL_MAX_10_EXP |
308 | Maximum decimal exponent |
DBL_MAX_EXP |
1024 | Maximum binary exponent |
DBL_MIN |
2.2250738585072014e-308 | Minimum normalized positive value |
DBL_MIN_10_EXP |
(-307) | Minimum decimal exponent |
DBL_MIN_EXP |
(-1021) | Minimum binary exponent |
_DBL_RADIX |
2 | Exponent radix |
DBL_TRUE_MIN |
4.9406564584124654e-324 | Minimum positive subnormal value |
FLT_DECIMAL_DIG |
9 | Number of decimal digits of rounding precision |
FLT_DIG |
6 | Number of decimal digits of precision |
FLT_EPSILON |
1.192092896e-07F | Smallest such that 1.0 + FLT_EPSILON != 1.0 |
FLT_HAS_SUBNORM |
1 | Type supports subnormal (denormal) numbers |
FLT_MANT_DIG |
24 | Number of bits in significand (mantissa) |
FLT_MAX |
3.402823466e+38F | Maximum value |
FLT_MAX_10_EXP |
38 | Maximum decimal exponent |
FLT_MAX_EXP |
128 | Maximum binary exponent |
FLT_MIN |
1.175494351e-38F | Minimum normalized positive value |
FLT_MIN_10_EXP |
(-37) | Minimum decimal exponent |
FLT_MIN_EXP |
(-125) | Minimum binary exponent |
FLT_RADIX |
2 | Exponent radix |
FLT_TRUE_MIN |
1.401298464e-45F | Minimum positive subnormal value |
LDBL_DIG |
15 | # of decimal digits of precision |
LDBL_EPSILON |
2.2204460492503131e-016 | Smallest such that 1.0 + LDBL_EPSILON != 1.0 |
LDBL_HAS_SUBNORM |
1 | Type supports subnormal (denormal) numbers |
LDBL_MANT_DIG |
53 | # of bits in significand (mantissa) |
LDBL_MAX |
1.7976931348623158e+308 | Maximum value |
LDBL_MAX_10_EXP |
308 | Maximum decimal exponent |
LDBL_MAX_EXP |
1024 | Maximum binary exponent |
LDBL_MIN |
2.2250738585072014e-308 | Minimum normalized positive value |
LDBL_MIN_10_EXP |
(-307) | Minimum decimal exponent |
LDBL_MIN_EXP |
(-1021) | Minimum binary exponent |
_LDBL_RADIX |
2 | Exponent radix |
LDBL_TRUE_MIN |
4.9406564584124654e-324 | Minimum positive subnormal value |
DECIMAL_DIG |
same as DBL_DECIMAL_DIG |
Default (double) decimal digits of rounding precision |