早在c++98 和c++03中long long已经存在,但c++11加强了对long long的规定。
long long也是一种c++整数数据类型,它提供了至少64位,即8字节的存储空间,通常用来储存非常大的整数值。范围:(-2^63 ~ 2^63-1),分为有符号和无符号两种:
//long long - 对应类型的数值可以使用 LL (大写) 或者 ll (小写) 后缀
long long num1 = 123456789LL;
long long num2 = 123456789ll;
//unsigned long long - 对应类型的数值可以使用 ULL (大写) 或者 ull (小写)
//或者 Ull、uLL (等大小写混合)后缀
unsigned long long num5 = 123456789ULL;
unsigned long long num6 = 123456789ull;
unsigned long long num3 = 123456789uLL;
unsigned long long num4 = 123456789Ull;
LL和ll表示 long long类型,ULL或ull表示unsigned long long类型,后缀可以明确指定证书字面量的类型,避免类型转换或截断。
当然不加后缀也可以,c++编译器可以自动识别类型,比如:
long long myNumber = 1234567890123456; // C++11及以后的标准中,myNumber被自动识别为long long类型
加上后缀会提高代码的可读性,让读者明确知道这是一个long long类型的值。
c++11中还定义了一些数据类型,比如int64_t这是一个精确的整数类型,保证在不同平台有64位(8字节)的宽度,避免了不同平台上证书类型宽度的差异。使用int64_t需要包含头文件<cstdint>.
#include <cstdint>
int64_t myNumber = 1234567890123456;
此外还引入了int8_t int16_t int32_t等有符号整数类型,分别保证了8位、16位、32位的宽度,头文件如上所述。这些整数类型是特别为确保在不同平台上具有固定宽度而定义的。这种确定性对于一些特定的应用场景非常有价值,例如嵌入式系统和网络协议。