Limits and other properties of numeric types
Sometimes, it is necessary to know and use the minimum and maximum values that can be represented with a numeric type, such as char
, int
, or double
. Many developers use standard C macros for this, such as CHAR_MIN
/CHAR_MAX
, INT_MIN
/INT_MAX
, and 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. However, numeric_limits
is not limited to that functionality, and offers additional constants for type property querying, such as whether a type is signed or not, how many bits it needs for representing its values, whether it can represent infinity for floating-point types, 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 include the size of arrays and switch cases). Due to that, developers preferred to...