long long整型

本文介绍了C++11标准中新增加的long long整型,包括其历史背景、不同平台上的表现形式、如何声明及初始化long long变量,并通过示例展示了如何获取long long类型在当前平台上的最大和最小值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相比于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类型的字面量。比如:

 
  1. long long int lli = -9000000000000000000LL;  
  2. 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大小的方法就是查看<climits>(或<limits.h>中的宏)。与long long整型相关的一共有3个:LLONG_MIN、LLONG_MAX和ULLONG_MIN,它们分别代表了平台上最小的long long值、最大的long long值,以及最大的unsigned long long值。可以看看下面这个例子,如代码清单2-5所示。

代码清单2-5

 
  1. #include <climits> 
  2. #include <cstdio> 
  3. using namespace std;  
  4.  
  5. int main() {  
  6.     long long ll_min = LLONG_MIN;  
  7.     long long ll_max = LLONG_MAX;  
  8.     unsigned long long ull_max = ULLONG_MAX;  
  9.  
  10.     printf("min of long long: %lld\n", ll_min); // min of long long: -9223372036854775808  
  11.     printf("max of long long: %lld\n", ll_max); // max of long long: 9223372036854775807  
  12.     printf("max of unsigned long long: %llu\n", ull_max);   // max of unsigned long long: 18446744073709551615  
  13. }  
  14. // 编译选项:g++ -std=c++11 2-2-1.cpp 

在代码清单2-5中,将以上3个宏打印了出来,对于printf函数来说,输出有符号的long long类型变量可以用符号%lld,而无符号的unsigned long long则可以采用%llu。18446744073709551615用16进制表示是0xFFFFFFFFFFFFFFFF(16个F),可知在我们的实验机上,long long是一个64位的类型。



原文地址http://book.51cto.com/art/201306/400310.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值