Limits and other properties of numeric types
Sometimes, it is necessary to know and use the minimum and maximum values representable with a numeric type, such as char
, int
, or double
. Many developers are using standard C macros for this, such as CHAR_MIN
/CHAR_MAX
, INT_MIN
/INT_MAX
, or DBL_MIN
/DBL_MAX
. C++ provides a class template called numeric_limits
with specializations for every numeric type that enables you to query the minimum and maximum value of a type, but is not limited to that and offers additional constants for type properties querying, such as whether a type is signed or not, how many bits it needs for representing its values, for floating point types whether it can represent infinity, and many others. Prior to C++11, the use of numeric_limits<T>
was limited because it could not be used in places where constants were needed (examples can include the size of arrays and switch cases). Due to that, developers preferred to use the C macros throughout their code. In C++11, that...