> 文档中心 > C++11新特性之long long类型

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:

  1. LLONG_MIN:代表当前平台上最小的 long long 类型整数;

  2. LLONG_MAX:代表当前平台上最大的 long long 类型整数;

  3. 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++

 

零基础学唱歌网