0
点赞
收藏
分享

微信扫一扫

一种可以简单获取基本类型最大、最小值的方法

有时候想要获取一种类型的最大值, C++在头文件limits.h定义了一些宏,比如

#define SHRT_MIN    (-32768)
#define SHRT_MAX      32767
#define USHRT_MAX     0xffff
#define INT_MIN     (-2147483647 - 1)
#define INT_MAX       2147483647
#define UINT_MAX      0xffffffff
#define LONG_MIN    (-2147483647L - 1)
#define LONG_MAX      2147483647L
#define ULONG_MAX     0xffffffffUL
#define LLONG_MAX     9223372036854775807i64
#define LLONG_MIN   (-9223372036854775807i64 - 1)
#define ULLONG_MAX    0xffffffffffffffffui64

但是使用宏有些不好,容易忘记名称。
C++其实也提供了模板类,可以更简单地获取最大、最小值

T numeric_limts<T>::max()
T numeric_limits<T>::min()

下面是一些简单的测试

#include <iostream>
using namespace std;

int main()
{
    char cmax = numeric_limits<char>::max();
    cout << "char max: " << int(cmax) << endl;

    unsigned char ucmax = numeric_limits<unsigned char>::max();
    cout << "unsigned char max: " << int(ucmax) << endl;

    short smax = numeric_limits<short>::max();
    cout << "short max: " << smax << endl;

    int imax = numeric_limits<int>::max();
    cout << "int max: " << imax << endl;

    long lmax = numeric_limits<long>::max();

    cout << "long max: " << lmax << endl;

    long long llmax = numeric_limits<long long>::max();
    cout << "long long max: " << llmax << endl;

    return 0;
}

返回值

注意这里用的long long类型是C++ 11标准才有的,是8个字节。

虽然numeric_limits这个方法在limits.h头文件中,但是包含了iostream头文件,似乎也不用包含limits.h。我这个测试用的Visual Studio编译器,可能在其他平台不同。

举报

相关推荐

0 条评论