C++11新特性之long long类型
今天让我们来看一下C++11新特性新增的数据类型吧,我们在编程经常会使用到类型来给变量定义,像int、double、char等等。但是你是否知道这些类型占用的字节数是多少吗?
今天小编带着你一起来看一下各种类型和C++11新特性新增的类型吧。
在C++标准中所有的整型数据类型,在C++11 标准中,基于整数大小的考虑,标准中还明确限定了各个数据类型最少占用的位数。下表即为整型类型的详细介绍:
short |
short int (有符号短整型) |
至少 16 位(2 个字节) |
signed short | ||
signed short int | ||
unsigned short |
unsigned short int (无符号短整型) |
|
unsigned short int | ||
int |
int (有符号整型) |
至少 16 位 (2 个字节) |
signed | ||
signed int | ||
unsigned |
unsigned int (无符号整型) |
|
unsigned int | ||
long |
long int (有符号长整型) |
至少 32 位 (4 个字节) |
long int | ||
signed long | ||
signed long int | ||
unsigned long |
unsigned long int (无符号长整型) |
|
unsigned long int | ||
long long(C++11) |
long long int (有符号超长整型) |
至少 64 位 (8 个字节) |
long long int(C++11) | ||
signed long long(C++11) | ||
signed long long int(C++11) | ||
unsigned long long(C++11) |
unsigned long long int (无符号超长整型) |
|
unsigned long long int(C++11) |
C++11 标准规定,每种整数类型必须同时具备有符号(signed)和无符号(unsigned)两种类型,且每种具体的有符号整形和无符号整形所占用的存储空间(也就是位数)必须相同。注意,C++11 标准中只限定了每种类型最少占用多少存储空间,不同的平台可以占用不同的存储空间。
上面表格中的long long类型是C++11新增的类型,用于定义超长整型变量。在定义的时候,跟long定义变量一样,需要加上“L”或者“l”后缀,long long型需要加上“LL”或者“ll”标识符。例如:
int serven_1 = 10; // 不添加任何后缀的时候,默认为4个字节的整型变量int serven_2 = 10l; // 加上后缀l后表示为long长整型变量int serven_3 = 10ul; // 加上后缀ul后表示为unsigned long无符号长整型变量int serven_4 = 10ll; // 加上后缀ll后表示为long long超长整型变量int serven_5 = 10ull; // 加上后缀ull后表示为unsigned long long 超长无符号整型变量
对于任意一种数据类型,读者可能更关心的是此类型的取值范围。对于 long long 类型来说,如果想了解当前平台上 long long 整形的取值范围,可以使用头文件中与 long long 整形相关的 3 个宏,分别为 LLONG_MIN、LLONG_MAX 和 ULLONG_MIN:
-
LLONG_MIN:代表当前平台上最小的 long long 类型整数;
-
LLONG_MAX:代表当前平台上最大的 long long 类型整数;
-
ULLONG_MIN:代表当前平台上最大的 unsigned long long 类型整数(无符号超长整型的最小值为 0);
#include #include#includeusing namespace std;int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); cout<<"The max value of long is:"<<LONG_MAX<<endl; cout<<"The min value of long is:"<<LONG_MIN<<endl; cout<<"The max value of unsigned long is:"<<ULONG_MAX<<endl<<endl; cout<<"The max value of long long is:"<<LLONG_MAX<<endl; cout<<"The min value of long long is:"<<LLONG_MIN<<endl; cout<<"The max value of unsigned long long is:"<<ULLONG_MAX<<endl; return a.exec();}
运行结果:
LLONG_MAX的16进制为:0x8000000000000000
LLONG_MIN的16进制为: 0x7FFFFFFFFFFFFFFF
ULLONG_MAX的16进制为:0xFFFFFFFFFFFFFFFF
欢迎关注微信公众号 “三贝勒文子”, 每天学习C++