📜  C ++中的std :: numeric_limits :: max()和std :: numeric_limits :: min()(1)

📅  最后修改于: 2023-12-03 15:29:42.913000             🧑  作者: Mango

使用 std::numeric_limits::max() 和 std::numeric_limits::min() 来获取数值类型的最大和最小值

在 C++ 中,我们可以使用 std::numeric_limits 类来获取数值类型的最大和最小值。这个类定义在 <limits> 头文件中,可以通过以下方式引入:

#include <limits>

然后我们就可以使用 std::numeric_limits 这个类来获取数值类型的最大值和最小值了。

获取整数类型的最大值和最小值

对于整数类型,std::numeric_limits<int>::max() 可以返回 int 类型的最大值,std::numeric_limits<int>::min() 可以返回 int 类型的最小值。例如:

#include <limits>
#include <iostream>

int main()
{
    std::cout << "int 最大值为:" << std::numeric_limits<int>::max() << std::endl;
    std::cout << "int 最小值为:" << std::numeric_limits<int>::min() << std::endl;
    return 0;
}

输出结果为:

int 最大值为:2147483647
int 最小值为:-2147483648

我们也可以使用 std::numeric_limits<unsigned int>::max() 来获取 unsigned int 类型的最大值,std::numeric_limits<unsigned int>::min() 来获取 unsigned int 类型的最小值。

#include <limits>
#include <iostream>

int main()
{
    std::cout << "unsigned int 最大值为:" << std::numeric_limits<unsigned int>::max() << std::endl;
    std::cout << "unsigned int 最小值为:" << std::numeric_limits<unsigned int>::min() << std::endl;
    return 0;
}

输出结果为:

unsigned int 最大值为:4294967295
unsigned int 最小值为:0
获取浮点数类型的最大值和最小值

对于浮点数类型,std::numeric_limits<float>::max() 可以返回 float 类型的最大值,std::numeric_limits<float>::min() 可以返回 float 类型的最小值。例如:

#include <limits>
#include <iostream>

int main()
{
    std::cout << "float 最大值为:" << std::numeric_limits<float>::max() << std::endl;
    std::cout << "float 最小值为:" << std::numeric_limits<float>::min() << std::endl;
    return 0;
}

输出结果为:

float 最大值为:3.40282e+38
float 最小值为:1.17549e-38

我们也可以使用 std::numeric_limits<double>::max() 来获取 double 类型的最大值,std::numeric_limits<double>::min() 来获取 double 类型的最小值。

#include <limits>
#include <iostream>

int main()
{
    std::cout << "double 最大值为:" << std::numeric_limits<double>::max() << std::endl;
    std::cout << "double 最小值为:" << std::numeric_limits<double>::min() << std::endl;
    return 0;
}

输出结果为:

double 最大值为:1.79769e+308
double 最小值为:2.22507e-308
获取其他数值类型的最大值和最小值

除了上面提到的 int、unsigned int、float 和 double 类型,std::numeric_limits 类也可以用来获取其他数值类型的最大值和最小值。例如:

#include <limits>
#include <iostream>

int main()
{
    std::cout << "short 最大值为:" << std::numeric_limits<short>::max() << std::endl;
    std::cout << "short 最小值为:" << std::numeric_limits<short>::min() << std::endl;

    std::cout << "long 最大值为:" << std::numeric_limits<long>::max() << std::endl;
    std::cout << "long 最小值为:" << std::numeric_limits<long>::min() << std::endl;

    std::cout << "long long 最大值为:" << std::numeric_limits<long long>::max() << std::endl;
    std::cout << "long long 最小值为:" << std::numeric_limits<long long>::min() << std::endl;

    std::cout << "unsigned long 最大值为:" << std::numeric_limits<unsigned long>::max() << std::endl;
    std::cout << "unsigned long 最小值为:" << std::numeric_limits<unsigned long>::min() << std::endl;

    return 0;
}

输出结果为:

short 最大值为:32767
short 最小值为:-32768
long 最大值为:9223372036854775807
long 最小值为:-9223372036854775808
long long 最大值为:9223372036854775807
long long 最小值为:-9223372036854775808
unsigned long 最大值为:18446744073709551615
unsigned long 最小值为:0

通过使用 std::numeric_limits::max()std::numeric_limits::min(),我们可以方便地获取任何数值类型的最大值和最小值,并在程序设计中使用它们来进行约束和限制。