本文已参与「新人创作礼」活动,一起开启掘金创作之路。
一、前言
在需要获取类型最大最小取值的应用场景中,每次都要通过网上查询所获,极为不方便,并且还要考虑跨平台,所幸C++标准库为我们提供了标准的解决方案
二、标准库介绍
#include <limits> //这是C++提供的库文件,包含numeric_limits模板类,方便使用
#include <climits> //这是C提供的库文件,包含每个类型的宏定义,不方便使用
例如:
INT_MAX INT_MIN LONG_LONG_MAX
每种类型一个宏定义,使用的时候极不方便,并且没法与模板结合使用
三、使用
3.1 代码
std::cout << "max:" << std::endl;
std::cout << "double:\t\t\t" << std::numeric_limits<double>::max() << std::endl;
std::cout << "unsigned long long:\t" << std::numeric_limits<unsigned long long>::max() << std::endl;
std::cout << "long long:\t\t" << std::numeric_limits<long long>::max() << std::endl;
std::cout << "unsigned long:\t\t" << std::numeric_limits<unsigned long>::max() << std::endl;
std::cout << "long:\t\t\t" << std::numeric_limits<long>::max() << std::endl;
std::cout << "unsigned int:\t\t" << std::numeric_limits<unsigned int>::max() << std::endl;
std::cout << "int:\t\t\t" << std::numeric_limits<int>::max() << std::endl;
std::cout << "unsigned short:\t\t" << std::numeric_limits<unsigned short>::max() << std::endl;
std::cout << "short:\t\t\t" << std::numeric_limits<short>::max() << std::endl;
std::cout << "unsigned char:\t\t" << static_cast<unsigned int>(std::numeric_limits<unsigned char>::max()) << std::endl;
std::cout << "char:\t\t\t" << static_cast<int>(std::numeric_limits<char>::max()) << std::endl;
std::cout << "bool:\t\t\t" << static_cast<unsigned int>(std::numeric_limits<bool>::max()) << std::endl;
std::cout << "\nmin:" << std::endl;
std::cout << "double:\t\t\t" << std::numeric_limits<double>::min() << std::endl;
std::cout << "unsigned long long:\t" << std::numeric_limits<unsigned long long>::min() << std::endl;
std::cout << "long long:\t\t" << std::numeric_limits<long long>::min() << std::endl;
std::cout << "unsigned long:\t\t" << std::numeric_limits<unsigned long>::min() << std::endl;
std::cout << "long:\t\t\t" << std::numeric_limits<long>::min() << std::endl;
std::cout << "unsigned int:\t\t" << std::numeric_limits<unsigned int>::min() << std::endl;
std::cout << "int:\t\t\t" << std::numeric_limits<int>::min() << std::endl;
std::cout << "unsigned short:\t\t" << std::numeric_limits<unsigned short>::min() << std::endl;
std::cout << "short:\t\t\t" << std::numeric_limits<short>::min() << std::endl;
std::cout << "unsigned char:\t\t" << static_cast<unsigned int>(std::numeric_limits<unsigned char>::min()) << std::endl;
std::cout << "char:\t\t\t" << static_cast<int>(std::numeric_limits<char>::min()) << std::endl;
std::cout << "bool:\t\t\t" << static_cast<unsigned int>(std::numeric_limits<bool>::min()) << std::endl;