【为什么】选用int64_t而不是longlong

简介: 【为什么】选用int64_t而不是longlong

int64_t 是 C++ 中的一种整型数据类型,占用 8 个字节(64 位),可以存储的整数范围是从 -9223372036854775808 到 9223372036854775807。它是一种固定长度的数据类型,可以保证在不同的平台上都有相同的位数和取值范围,适用于需要存储大整数的场合。在某些系统中,也可以用 long long int 代替 int64_t。

使用 long long 存储大整数在绝大多数情况下可能是没有问题的,但是在不同的编译器或平台上的实现有可能是不同的,由于 long long 的长度没有明确定义,可能只占有 4 个字节(32 位),而在一些应用场景需要确保整数类型占用的字节数和范围。这就是为什么对于大整数我们会选择使用 int64_t 类型的原因,它是一个标准的、固定长度的整数类型。

那有什么场景是只能用longlong而不能用int64_t的呢

在某些不使用补码表示的嵌入式系统中,C++编译器可能不存在 int64_t 类型。此外,如果在其他程序库、运行环境等上下文中定义了某个名为 int64_t 的实体,那么使用 long long 代替 int64_t 可能更明确和安全。

补充问题:int64_t和longlong和__int64

  • int64_t是C99标准引入的一种数据类型,可以实现跨平台的可移植性。在32位和64位系统中都使用同一种大小和字节序。该类型定义在<stdint.h>头文件中。
  • long long是C99和C++11中的一种基本类型,用于表示64位整数。需要注意的是,该类型并不是在所有平台上都实现为64位的整型,具体实现可以参考编译器文档。
  • __int64是Microsoft Visual C++编译器所支持的一种扩展整型类型,用于定义一个有符号64位整型变量。它仅在Microsoft Visual C++编译器中有效,可能不具有跨平台的可移植性。

因此,如果要实现跨平台的可移植性,应该使用int64_t类型。如果使用Microsoft Visual C++编译器,则可以使用__int64类型。而long long可以在大多数情况下使用,但在某些特定平台上可能会与定义不符。

相关文章
|
算法 C语言
如何用C语言轻松判断回文数?
如何用C语言轻松判断回文数?
|
22天前
|
人工智能 自然语言处理 搜索推荐
AI数字人技术力盘点:数字人平台技术实力、产品实测、市场口碑综合推荐
2025年,AI数字人爆发:克拉玛依“小克”上线,罗永浩数字人6小时带货5500万。IDC数据显示,中国AI数字人市场规模2024年达41.2亿元,增速85.3%。世优科技以全栈技术打造1200+数字人IP,赋能政务、文旅等场景;科大讯飞依托语音优势,让“数字大圣”多语互动;微软小冰聚焦明星IP,孵化洛天依等虚拟偶像。从技术深耕到IP运营,三巨头各展所长,推动数字人从概念走向规模化落地,重塑商业未来。
98 0
|
传感器 监控 物联网
智能水管理:城市水资源的优化分配
【10月更文挑战第9天】在城市化进程中,水资源管理和分配成为关键议题。面对人口增长、工业与农业需求增加导致的资源短缺和污染问题,智能水管理技术应运而生。本文探讨其概念、技术和应用,展示如何通过现代信息技术、物联网、大数据分析及人工智能手段实现水资源的实时监控、精准预测和智能调度,从而提升城市供水系统的安全性与可靠性,促进可持续发展。
|
6月前
|
SQL 人工智能 关系型数据库
GitHub 热门!MindsDB 破解 AI + 数据库瓶颈,究竟有什么惊艳亮点?只需 SQL 即可实现智能预测
MindsDB 是一款将 AI 能力直接注入数据库的开源工具,支持 MySQL、PostgreSQL 等多种数据库连接,通过 SQL 即可完成模型训练与预测。它提供 AutoML 引擎、LLM 集成、联邦查询等功能,简化 MLOps 流程,实现数据到智能的无缝衔接。项目在 GitHub 上已获 32.4k 星,社区活跃,适用于客户流失预警、推荐系统、情感分析等场景。开发者无需深入模型细节,即可快速构建智能解决方案。项目地址:https://github.com/mindsdb/mindsdb。
1080 0
|
JavaScript Java 测试技术
大学生体质测试|基于Springboot+vue的大学生体质测试管理系统设计与实现(源码+数据库+文档)
大学生体质测试|基于Springboot+vue的大学生体质测试管理系统设计与实现(源码+数据库+文档)
332 0
|
运维 监控 自动驾驶
什么是系统的鲁棒性?
本文探讨了系统鲁棒性的重要性及其评估方法。鲁棒性指系统在异常情况和不确定性因素下保持稳定运行的能力,是系统稳定性和可靠性的关键指标。文章从系统设计、自我修复及数据处理三方面评估鲁棒性,并提出预防、检测与恢复的策略。通过具体措施如代码质量、异常预防、监控和冗余备用等,提升系统在各种挑战下的表现。这些策略不仅理论性强,也与日常开发实践紧密相连。
1084 0
|
存储 安全 算法
【C++ 17 包裹类 泛型容器 std::any】深入理解与应用C++ std::any:从泛型编程到多态设计
【C++ 17 包裹类 泛型容器 std::any】深入理解与应用C++ std::any:从泛型编程到多态设计
1702 1
|
存储 Python
Python函数参数传递
Python函数参数传递
397 1
|
IDE 开发工具 开发者
isort——Python 代码中的导入语句进行排序和格式化
isort,全称是 "Import Sorting",是一个 Python 工具,用来对 Python 代码中的导入语句进行排序和格式化。它可以帮助我们按照一定的规则对导入的模块进行排序,使得代码更加整洁,易于阅读和维护。
|
测试技术
[googletest] --- 简易使用教程
[googletest] --- 简易使用教程
952 0