首页 > 后端开发 > C++ > 在 64 位 Windows 上,'long”真的是 64 位吗?

在 64 位 Windows 上,'long”真的是 64 位吗?

DDD
发布: 2025-01-01 04:50:10
原创
163 人浏览过

Is 'long' Really 64-bits on 64-bit Windows?

了解 64 位 Windows 上“long”的位大小

问题:

相互矛盾的信息表明 ' long' 在 64 位 Windows 计算机上可能不是 64 位。这是真的吗?程序员应该使用什么来代替?

答案:

答案在于检查 64 位平台上不同的整数大小排列:

ILP64(Int、Long、指针是64 位)

    所有整数数据类型和指针都是 64 位。

LP64(长整型,指针都是 64 位)

    长整型和指针类型为 64位。
  • Int 和其他整数类型保持 32 位。

LLP64(Long Long,指针为 64 位)

    这是微软在64位使用的方案Windows。
  • Long long 和指针类型为 64 位。
  • Int 和 long 仍为 32 位。

对 Windows 的影响:

在 64 位 Windows 上,“long”确实是 32 位,与其他 64 位平台。 Microsoft 采用了 LLP64 方案来确保与现有 32 位应用程序的兼容性。

建议:

为了确保平台中立的代码,请使用 header:

    32 位整数的 int32_t
  • 64 位整数的 int64_t
  • 指针的 uintptr_t
谨慎使用使用系统类型(例如“long”)不同平台有所不同。仅使用 intptr_t 作为两个 uintptr_t 值相减的结果。

结论:

64 位 Windows 上 'long' 的位大小为 32 位,偏离许多其他 64 位系统使用的 LP64 方案。为了避免特定于平台的复杂性,程序员应该采用平台中立的整数类型并小心处理系统类型。

以上是在 64 位 Windows 上,'long”真的是 64 位吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板