C++11 long long超长整型与nullptr空指针详解

清欢
清欢
发布时间:2026-10-15| 4人浏览过
原创

本文介绍 C++11 标准中新添加的 long long 超长整型和 nullptr 初始化空指针。针对C++11标准的两大核心更新,详细解析了int类型的扩展与指针安全初始化的具体实现方式。

结果或目标

C++11 标准为了解决早期整数类型表示范围受限以及 NULL 宏在函数重载时容易引发的歧义问题,引入了 long long 超长整型和 nullptr 关键字。正确掌握这两个特性,能够确保程序在不同平台上具有更大的数据容纳空间,并在指针管理上杜绝“野指针”与类型转换错误。

准备条件

  • 确认编译器支持 C++11 标准(如 Visual Studio 2010+ 或 GCC 4.6.1+)。
  • 理解基本的整数数据类型与指针概念。

真实操作顺序

第1步:使用 long long 处理超大数值

C++11 标准要求每种整数类型必须同时具备有符号和无符号两种形式,并限定了各类型的最小占用位数。其中,long long 是 C++11 新加入的类型,用于满足 64 位数据存储需求。

  • 类型说明:long long 至少有 64 位(8字节),unsigned long long 提供同宽度的无符号支持。
  • 字面量后缀:直接书写的长整型常量默认可能被视为 int,必须添加后缀才能被识别为 long long 类型:
  1. 有符号超长整型:使用 LL 或 ll 后缀(例如:10LL)。
  2. 无符号超长整型:使用 ULL、ull、Ull 或 uLL 后缀(例如:10ULL)。

若想获取当前平台上的取值边界,可引用 <climits> 头文件中的宏定义:

  • LLONG_MIN / LLONG_MAX:获取最小/大值。
  • ULLONG_MIN:通常值为 0,ULLONG_MAX 获取最大无符号值。
#include <iostream>
#include <climits>
using namespace std;

int main() {
    cout << "long long最大值:" << LLONG_MAX << endl;
    cout << "unsigned long long最大值:" << ULLONG_MAX << endl;
    return 0;
}

第2步:通过 nullptr 安全初始化空指针

在 C++98/03 时代,程序员通常使用 NULL 或 0 来初始化指针以避免成为“野指针”。然而,NULL 本质上是宏定义的字面常量 0。这导致在面对函数重载时,NULL 会被隐式转换为整形参数,从而调用错误的函数版本,引发逻辑异常。

// C++98 时代的隐患:isnull(NULL) 调用的是 int n 的重载版本
void isnull(void *c){ cout << "void*c" << endl; }
void isnull(int n){ cout << "int n" << endl; }

// 解决方案需要强制类型转换:
isnull((void*)NULL); 

C++11 引入了 nullptr 专用于解决此问题:

  • 唯一匹配性:nullptr 属于全新的 nullptr_t 类型,它可以被隐式转换为任意指针类型,但绝不会被转换为整形。
  • 跨平台兼容**:只要编译器支持 C++11,即可直接使用 nullptr 初始化任何类型的指针。
// 正确的 C++11 用法
int * p = nullptr;
double * ptr = nullptr;

// 此时 isnull(nullptr) 将准确调用 void* 版本
isnull(nullptr); 

完成判断

  • 使用后缀 LL/ULL 声明的变量能通过编译并正确存储超出 int 范围的大数值。
  • 所有指针初始化均采用 nullptr,消除了旧标准中因零值转换导致的函数重载歧义。

简要总结

以上就是 C++11 中 long long 超长整型和 nullptr 初始化空指针的详细内容,更多关于 C++11 高级特性优化的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。