输出C++各类型的取值范围

238 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一、前言

在需要获取类型最大最小取值的应用场景中,每次都要通过网上查询所获,极为不方便,并且还要考虑跨平台,所幸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;
3.2 结果

image.png