在C++中,limits
是一个模板类,它定义在<limits>
头文件中。这个模板类用于获取数据类型的属性,例如最小值、最大值、精度等。
std::numeric_limits
是一个模板类,可以为内置数据类型(如int、float、double等)提供有关其属性的信息。这些属性包括:
min()
: 返回该类型能表示的最小值。max()
: 返回该类型能表示的最大值。epsilon()
: 返回该类型的最小精度,即1.0加上此值后得到的下一个可表示的值与1.0之间的差。digits
: 该类型的基数为底的位数。is_signed
: 如果该类型是有符号的,则为true。is_integer
: 如果该类型是整数类型,则为true。is_exact
: 如果该类型的运算结果总是精确的,则为true。radix
: 该类型的基数(通常为2)。以下是一个使用std::numeric_limits
的示例:
#include<iostream>
#include<limits>
int main() {
std::cout << "Type of int: "<< typeid(int).name() << '\n';
std::cout << "Minimum value of int: "<< std::numeric_limits<int>::min() << '\n';
std::cout << "Maximum value of int: "<< std::numeric_limits<int>::max() << '\n';
std::cout << "Is int signed: "<< std::boolalpha<< std::numeric_limits<int>::is_signed << '\n';
std::cout << "Is int exact: "<< std::boolalpha<< std::numeric_limits<int>::is_exact << '\n';
return 0;
}
输出:
Type of int: i
Minimum value of int: -2147483648
Maximum value of int: 2147483647
Is int signed: true
Is int exact: true