C++11新特性之long long超长整形
1.介绍
long long 超长整形是C++11标准新添加的,用于表示更大范围整数的类型。
2.用法
占用空间:至少64位(8个字节)。
对于有符号long long 整形,后缀用“LL”或“II”标识。例如,“10LL”就表示有符号超长整数10。其取值范围为-2^63~2^63-1。
对于无符号long long 整形,后缀用“ULL”、“ull”、“UII”、“uLL”标识。例如,“10ULL”就表示无符号超长整数10。其取值范围为0~2^64-1。
注意事项:C++11标准规定,每种整形类型必须同时具备有符号(signed)和无符号(unsigned)两种类型,且所占用的空间必须相同。并且,C++11标准只限制了每种类型的最少占用存储空间,不同平台可能占用不同的存储空间。
3.使用场景
(1)处理大整数。例如计算阶乘、斐波那契数列等可能产生大数值的算法中,普通的整形可可能会溢出, 使用long long 类型可以一定程度上避免这个问题。
(2)处理时间戳。时间戳通常是一个较大的整数,使用long long类型可以很好的满足需求。
4.总结
long long 类型为C++开发者提供了一种处理大整数的有效方式,但在使用时需要注意以下问题:
(1)溢出问题。long long 类型范围虽然很大,但仍然可能溢出,因此需要注意是否会溢出。
(2)性能问题。long long 类型需要更大的存储空间,在计算时比普通整数类型(如 int)稍微慢些,因此在对性能要求较高的场景中,需要权衡是否真的需要使用long long 类型。