数据类型long long是C++11中重新定义的,标准规定它最小是64bit
在这之前为了提供超过32bit的整数,各个开发环境(编译器)分别定义了各自的64bit整数类型。这会导致代码不兼容
现在,C++11直接定义了long long类型
我猜许多人应该使用过这个类型,当然在C++11之前,这种尝试会被编译器无情拒绝,自C++11之后就不会在发生这样地情况了。因此我认为:在C++11新特性中,long long一定是最容易被接受的一个。多数程序员看到它时甚至不会意识到这是一个新特性。
相应的,C++11规定,在指定long long
字面值类型时,使用ll
或者LL
。这也可以从long
的l
或者L
推断出来。
另外,也可以像long
类型的字面值一样使用U
后缀表明这是一个无符号数
2LL
3ll
100ULL
小写的ll虽然合法,但是容易和数字1混淆,还是用大写的吧。
另外,要了解平台上long long大小的方法是查看<climits>
或者<limitx.h>
中的宏。与long long整型相关的一共有三个,如下:
#include <cstdio>
#include <climits>
int main()
{
long long ll_min = LLONG_MIN;
long long ll_max = LLONG_MAX;
unsigned long long ull_max = ULLONG_MAX;
printf("min of long long: %lld\n", ll_min);
printf("max of long long: %lld\n", ll_max);
printf("max of unsigned long long: %llu\n", ull_max);
return 0;
}