Utilities library
General utilities
Date and time
Function objects
Formatting library (C++20)
Relational operators (deprecated in C++20)
Integer comparison functions
Swap and type operations
Common vocabulary types

Elementary string conversions
Type support
Basic types
Fundamental types
Fixed width integer types (C++11)
Numeric limits
C numeric limits interface
Runtime type information
Type traits
Type categories
Type properties
(C++11)(until C++20)
(C++11)(deprecated in C++20)
Type trait constants
Constant evaluation context
Supported operations
Relationships and property queries
Type modifications
Type transformations
(C++11)(until C++20)(C++17)
Defined in header <limits>
static T min() throw();
(until C++11)
static constexpr T min() noexcept;
(since C++11)

Returns the minimum finite value representable by the numeric type T.

For floating-point types with denormalization, min returns the minimum positive normalized value. Note that this behavior may be unexpected, especially when compared to the behavior of min for integral types. To find the value that has no values less than it, use numeric_limits::lowest.

min is only meaningful for bounded types and for unbounded unsigned types, that is, types that represent an infinite set of negative values have no meaningful minimum.

[edit] Return value

T std::numeric_limits<T>::min()
/* non-specialized */ T()
bool false
signed char SCHAR_MIN
unsigned char 0
wchar_t WCHAR_MIN
char8_t 0
char16_t 0
char32_t 0
short SHRT_MIN
unsigned short 0
unsigned int 0
unsigned long 0
long long LLONG_MIN
unsigned long long 0
float FLT_MIN
double DBL_MIN
long double LDBL_MIN

[edit] Example

Demonstrates the use with typedef types, and the difference in the sign of the result between integer and floating-point types

#include <limits>
#include <cstddef>
#include <iostream>
int main()
        << "short: " << std::dec << std::numeric_limits<short>::min()
        << " or " << std::hex << std::showbase 
        << std::numeric_limits<short>::min() << '\n'
        << "int: " << std::dec << std::numeric_limits<int>::min() << std::showbase
        << " or " << std::hex << std::numeric_limits<int>::min() << '\n' << std::dec 
        << "ptrdiff_t: " << std::numeric_limits<std::ptrdiff_t>::min() << std::showbase
        << " or " << std::hex << std::numeric_limits<std::ptrdiff_t>::min() << '\n'
        << "float: " << std::numeric_limits<float>::min()
        << " or " << std::hexfloat << std::numeric_limits<float>::min() << '\n'
        << "double: " << std::defaultfloat << std::numeric_limits<double>::min()
        << " or " << std::hexfloat << std::numeric_limits<double>::min() << '\n';

Possible output:

short: -32768 or 0x8000
int: -2147483648 or 0x80000000
ptrdiff_t: -9223372036854775808 or 0x8000000000000000
float: 1.17549e-38 or 0x1p-126
double: 2.22507e-308 or 0x1p-1022

[edit] See also

[static] (C++11)
returns the lowest finite value of the given type
(public static member function) [edit]
returns the smallest positive subnormal value of the given floating-point type
(public static member function) [edit]
returns the largest finite value of the given type
(public static member function) [edit]