Ranges of numeric types
suggest changeThe ranges of the integer types are implementation-defined. The header <limits> provides the std::numeric_limits<T> template which provides the minimum and maximum values of all fundamental types. The values satisfy guarantees provided by the C standard through the <climits> and (>= C++11) <cinttypes> headers.
std::numeric_limits<signed char>::min()equalsSCHAR_MIN, which is less than or equal to -127.std::numeric_limits<signed char>::max()equalsSCHAR_MAX, which is greater than or equal to 127.std::numeric_limits<unsigned char>::max()equalsUCHAR_MAX, which is greater than or equal to 255.std::numeric_limits<short>::min()equalsSHRT_MIN, which is less than or equal to -32767.std::numeric_limits<short>::max()equalsSHRT_MAX, which is greater than or equal to 32767.std::numeric_limits<unsigned short>::max()equalsUSHRT_MAX, which is greater than or equal to 65535.std::numeric_limits<int>::min()equalsINT_MIN, which is less than or equal to -32767.std::numeric_limits<int>::max()equalsINT_MAX, which is greater than or equal to 32767.std::numeric_limits<unsigned int>::max()equalsUINT_MAX, which is greater than or equal to 65535.std::numeric_limits<long>::min()equalsLONG_MIN, which is less than or equal to -2147483647.std::numeric_limits<long>::max()equalsLONG_MAX, which is greater than or equal to 2147483647.std::numeric_limits<unsigned long>::max()equalsULONG_MAX, which is greater than or equal to 4294967295.std::numeric_limits<long long>::min()equalsLLONG_MIN, which is less than or equal to -9223372036854775807.std::numeric_limits<long long>::max()equalsLLONG_MAX, which is greater than or equal to 9223372036854775807.std::numeric_limits<unsigned long long>::max()equalsULLONG_MAX, which is greater than or equal to 18446744073709551615.
For floating-point types T, max() is the maximum finite value while min() is the minimum positive normalized value. Additional members are provided for floating-point types, which are also implementation-defined but satisfy certain guarantees provided by the C standard through the <cfloat> header.
- The member
digits10gives the number of decimal digits of precision.
* `std::numeric_limits<float>::digits10` equals `FLT_DIG`, which is at least 6.
* `std::numeric_limits<double>::digits10` equals `DBL_DIG`, which is at least 10.
* `std::numeric_limits<long double>::digits10` equals `LDBL_DIG`, which is at least 10.
- The member
min_exponent10is the minimum negative E such that 10 to the power E is normal.
* `std::numeric_limits<float>::min_exponent10` equals `FLT_MIN_10_EXP`, which is at most -37.
* `std::numeric_limits<double>::min_exponent10` equals `DBL_MIN_10_EXP`, which is at most -37.
std::numeric_limits<long double>::min_exponent10 equals LDBL_MIN_10_EXP, which is at most -37.
- The member
max_exponent10is the maximum E such that 10 to the power E is finite.
* `std::numeric_limits<float>::max_exponent10` equals `FLT_MIN_10_EXP`, which is at least 37.
* `std::numeric_limits<double>::max_exponent10` equals `DBL_MIN_10_EXP`, which is at least 37.
* `std::numeric_limits<long double>::max_exponent10` equals `LDBL_MIN_10_EXP`, which is at least 37.
- If the member
is_iec559is true, the type conforms to IEC 559 / IEEE 754, and its range is therefore determined by that standard.
Found a mistake? Have a question or improvement idea?
Let me know.
Table Of Contents