climit 头文件的内容

int、long和long long

C++的short、int、long和long long类型通过使用不同数目的位来存储值(关于位的概念自行了解),最多能够表示4中不同的整数宽度。C++提供了一种灵活的标准,它确保了最小长度(从C语言借鉴而来),如下:
1. short 至少16位
2. int 至少与 short 一样长
3. long 至少 32 位,且至少与 int 一样长
4. long long 至少64位,且至少与 long 一样长 (此类型为 C++11 新增,旧的编译器可能不支持)


当前很多系统都使用最小长度,即short为16位,long为32位。这仍然为int提供了多种选择,其宽度可以是16位、24位或32位,同时又符合标准;甚至可以是64位,因为long 和 long long 至少长64位。通常,在老式的 IBM PC 的实现中,int的宽度为16位(与short相同),而在Windows XP及以上、Mac OS X、VAX和很多其它微型计算机的实现中为32位,与long相同。
要知道系统中整数的最大长度,可以在程序中使用 C++ 工具来检查类型的长度。首先,sizeof 运算符返回类型或变量的长度,单位为字节。需要注意的是,“字节”的含义依赖于实现,因此在一个系统中,两字节的int可能是16位,而在另一个系统中可能是32位。其次,头文件 climits(在老式实现中为 limits.h)中包含了关于整形限制的信息,它定义了表示各种限制的符号名称。例如,INT_MAX 为 int 的最大取值, CHAR_BIT 为字节的位数。

演示代码

1    #include <iostream>
2    #include <climits>
3     
4    int main()
5    {
6        using namespace std;
7     
8        int n_int = INT_MAX; //max value for integer number
9        short n_short = SHRT_MAX;
10        long n_long = LONG_MAX;
11        long long n_llong = LLONG_MAX;
12     
13        cout << "int is " << sizeof (int) << " bytes." << endl;
14        cout << "short is " << sizeof n_short << " bytes." << endl;
15        cout << "long is " << sizeof n_long << " bytes." << endl;
16        cout << "long long is " << sizeof n_llong << " bytes." << endl;
17        cout << endl;
18     
19        cout << "Maximum values: " << endl;
20        cout << "int: " << n_int << endl;
21        cout << "short: " << n_short << endl << "long: " << n_long << endl << "long long: " << n_llong << endl << endl;
22     
23        cout << "Minimum int value = " << INT_MIN << endl;
24        cout << "Bits per byte = " << CHAR_BIT << endl;
25     
26        return 0;
27    }
   

运行结果如下(环境:Windows 7 64位,VC++ 2008 sp1, SDK 6.1):
int is 4 bytes.
short is 2 bytes.
long is 4 bytes.
long long is 8 bytes.

Maximum values:
int: 2147483647
short: 32767
long: 2147483647
long long: 9223372036854775807

Minimum int value = -2147483648
Bits per byte = 8

下面来看一下上述程序的主要编程特性

1. 运算符 sizeof 和头文件 climits
sizeof 运算符指出,在使用8位字节的系统中,int的长度为4个字节。可对类型名或变量名使用 sizeof 运算符。对类型名(如 int)使用 sizeof 运算符是,应将名称放在括号中;但对变量名括号是可选的。
头文件 climits 定义了符号常量来表示类型的限制。编译器厂商提供了 climits 文件,该文件指出了其编译器中的值。
下面将依次列举一些 climits 中的符号常量

    1. CHAR_BIT :char的位数
    2. CHAR_MAX :char的最大值
    3. CHAR_MIN :char的最小值
    4. SCHAR_MAX :signed char的最大值
    5. SCHAR_MIN :signed char的最小值
    6. UCHAR_MAX :unsigned char的最大值
    7. SHRT_MAX :short 的最大值
    8. SHRT_MIN :short 的最小值
    9. USHRT_MAX :unsigned short 的最大值
    10. INT_MAX :int 的最大值
    11. INT_MIN :int 的最小值
    12. UINT_MAX :unsigned int 的最大值
    13. LONG_MAX :long 的最大值
    14. LONG_MIN :long 的最小值
    15. ULONG_MAX :unsigned long 的最大值
    16. LLONG_MAX :long long 的最大值
    17. LLONG_MIN :long long 的最小值
    18. ULLONG_MAX :unsigned long long 的最大值
原文地址:https://www.cnblogs.com/stepping/p/5744392.html