C++11 long long整型,相比于C++98标准,C++11整型的最大改变就是多了long long。但事实上,long long整型本来就离C++标准很近,早在1995年,long long就被提议写入C++98标准,却被C++标准委员会拒绝了。而后来,long long类型却进入了C99标准,而且也事实上也被很多编译器支持。于是辗转地,C++标准委员会又掉头决定将long long纳入C++11标准。
long long整型有两种:long long和unsigned long long。在C++11中,标准要求long long整型可以在不同平台上有不同的长度,但至少有64位。我们在写常数字面量时,可以使用LL后缀(或是ll)标识一个long long类型的字面量,而ULL(或ull、Ull、uLL)表示一个unsigned long long类型的字面量。比如:
long long int lli = -9000000000000000000LL;
unsigned long long int ulli = -9000000000000000000ULL;
就定义了一个有符号的long long变量lli和无符号的unsigned long long变量ulli。事实上,在C++11中,还有很多与long long等价的类型。比如对于有符号的,下面的类型是等价的:long long、signed long long、long long int、signed long long int;而unsigned long long和unsigned long long int也是等价的。
同其他的整型一样,要了解平台上long long大小的方法就是查看
#include <climits>
#include <cstdio>
using namespace std;
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); // min of long long:
-9223372036854775808
printf("max of long long: %lld\n", ll_max); // max of long long:
9223372036854775807
printf("max of unsigned long long: %llu\n", ull_max); // max of unsigned
long long: 18446744073709551615
}
在代码中,将以上3个宏打印了出来,对于printf函数来说,输出有符号的long long类型变量可以用符号%lld
,而无符号的unsigned long long则可以采用%llu
。18446744073709551615用16进制表示是0xFFFFFFFFFFFFFFFF(16个F),可知在我们的实验机上,long long是一个64位的类型。
酷客教程相关文章:
评论前必须登录!
注册