64 位 Windows 上 long 的位大小是多少?

2023-11-27

不久前,有人告诉我long在 64 位机器上不是 64 位,我应该始终使用int。这对我来说没有意义。我看过文档(例如苹果官方网站上的文档)说long为 64 位 CPU 编译时确实是 64 位。我查了一下 64 位 Windows 上的内容,发现

  • 视窗:long and int长度保持 32 位,以及特殊的新数据类型 是为 64 位整数定义的。

(from http://www.intel.com/cd/ids/developer/asmo-na/eng/197664.htm?page=2)

我应该用什么?我应该定义类似的东西uw, sw((无)符号宽度)作为long如果不是在 Windows 上,否则检查目标 CPU 的大小?


在 Unix 世界中,64 位平台的整数和指针的大小有几种可能的安排。最广泛使用的两个是 ILP64(实际上,这只是极少数的例子;Cray 就是其中之一)和 LP64(几乎适用于其他所有内容)。这些缩写词来自“int、long、pointers are 64-bit”和“long、pointers are 64-bit”。

Type           ILP64   LP64   LLP64
char              8      8       8
short            16     16      16
int              64     32      32
long             64     64      32
long long        64     64      64
pointer          64     64      64

ILP64 系统被放弃,取而代之的是LP64(也就是说,根据 Aspen 小组的建议,几乎所有后来的进入者都使用 LP64;只有具有长期 64 位操作传统的系统才使用不同的方案)。所有现代 64 位 Unix 系统都使用 LP64。 MacOS X 和 Linux 都是现代 64 位系统。

Microsoft 使用不同的方案来转换到 64 位:LLP64(“long long,指针是 64 位”)。这样做的优点是 32 位软件无需更改即可重新编译。它的缺点是与其他人所做的不同,并且还需要修改代码才能利用 64 位容量。总是需要修改;它只是与 Unix 平台上所需的修订版不同的一组修订版。

如果您围绕平台中立的整数类型名称设计软件,可能会使用 C99<inttypes.h>标头,当类型在平台上可用时,它以有符号(列出)和无符号(未列出;前缀为“u”)提供:

  • int8_t- 8 位整数
  • int16_t- 16 位整数
  • int32_t- 32 位整数
  • int64_t- 64 位整数
  • uintptr_t- 足够大以容纳指针的无符号整数
  • intmax_t- 平台上整数的最大尺寸(可能大于int64_t)

然后,您可以在重要的地方使用这些类型对应用程序进行编码,并对系统类型(可能不同)非常小心。有一个intptr_ttype - 用于保存指针的有符号整数类型;你应该计划不使用它,或者只使用它作为两个相减的结果uintptr_t值(ptrdiff_t).

但是,正如问题所指出的(难以置信),64 位机器上的整数数据类型的大小有不同的系统。习惯它;世界不会改变。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

64 位 Windows 上 long 的位大小是多少? 的相关文章

  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 自定义波特率,redux

    我遇到的问题详述如下自定义波特率 https stackoverflow com questions 7714060 custom baud rate SetCommState 波特率 921600 失败 但波特率 115200 成功 尽管
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • Qt 支持 Windows 蓝牙 API 吗?

    谁能告诉我 Qt 是否支持 Windows 蓝牙 API 如果是这样 您能否分享一些有关如何使用它的信息 自上次答复以来 这个问题的答案发生了一些变化 Qt 5 2 版为 Linux BlueZ 和 BlackBerry 设备实现了蓝牙 A
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template

随机推荐

  • Apache POI - 单元格 setCellValue 抛出 NullPointerException

    当我尝试更新现有 Excel 文件时 遇到以下错误 Exception in thread main java lang NullPointerException at xltest main xltest java 28 My code
  • TensorFlow:从多个检查点恢复变量

    我有以下情况 我有 2 个模型用 2 个单独的脚本编写 模型 A 由变量组成a1 a2 and a3 并且写成A py 模型 B 由变量组成b1 b2 and b3 并用 B py 编写 在每个A py and B py 我有一个tf tr
  • 多个纹理图像混合到 3D 地面上

    电脑游戏如何呈现自己的阵地 我将使用几何高度图 尽管我稍后会对其进行优化 但我想知道最好的技术是什么 例如 绘制 我的地面 到处都是草 到处都是土路 城镇里有砾石 每种材料之间的过渡也很平滑 我只使用巨大的预烘焙纹理吗 当我可以平铺现有纹理
  • 当前模态视图控制器

    我刚刚开始iPhone开发 我有一个选项卡式应用程序 我想以模式方式显示登录表单 所以我看了这里苹果开发者并在我的一个视图控制器中执行此操作 我将一个按钮连接到以下操作 import LoginForm h IBAction showLog
  • WxPython:PyInstaller 失败,没有名为 _core_ 的模块

    我正在使用 PyInstaller 将 wxpython 3 0 2 0 应用程序转换为二进制文件 这些二进制文件在 Ubuntu 12 04 上构建和执行时工作正常 但是 如果我在 Ubuntu 14 04 上构建 则会收到以下错误 当我
  • 如何使用大写列名的Rails?

    我有以下内容作为 AR 查询的一部分 having COUNT foo id gt bar maxUsers 这会产生一个错误 ActiveRecord StatementInvalid PG UndefinedColumn ERROR c
  • 为什么我的 php substr() 在剪切文本时显示模糊字符?

    我正在使用substr 函数限制字符串中的字符 但有时 输出文本包含一些晦涩的字符和问号等 substred 的文本已经是 UTF8 编码的 而不是在 html 实体中出现这样的问题 Thanks 因为你正在把你的角色切成两半 Use mb
  • 需要为 EmptyStacks 创建一个新的 RunTimeException

    所以我的任务可能听起来很简单 但它让我感到困惑 我已经浏览了互联网上的代码 但我无法掌握 我也不行 掌握老师发布的幻灯片 这就是对我的要求 创建一个名为 EmptyStackException 的新运行时异常类型 然而我不知道如何制作方法
  • 如何使用元对象协议向对象添加属性?

    我试图回答this问题 并认为我可以使用元对象协议向类添加属性 这是一个我尝试添加属性的最小示例test到班级Configuration施工后 use v6 class Configuration my config Configurati
  • 核心数据中的索引关系

    我刚刚开始在 iPhone SDK 上使用 Core Data 并且正在考虑保存有序列表 例如数组 然而 核心数据中的关系在检索时表示为集合 这使得保存对象的放置顺序变得困难 一个很好的例子是允许对项目进行重新排序时表视图中的数据项目 一个
  • JSF生成的HTML元素ID是变化的,如何将其设置为固定的元素ID?

    我有一个 JSF 输入文本组件 其 id 为search 在生成的 HTML 输出中 它看起来像这样j idt17 search 但是数量17正在不时发生变化 怎样才能让它保持一成不变呢 给生成 HTML 元素的 JSF 组件id j id
  • install_name_tool -change 和 -id 之间的区别

    我已经在这个概念上苦苦挣扎了一段时间 我无法真正理解两者之间的区别 change and id 手册页指出 id name Changes the shared library identification name of a dynami
  • 滚动我自己的@Html.BeginfOrm()

    我正在编写一个自定义验证集 它将显示 div 上所有缺失的元素 我希望能够使用自定义 Html BeginForm 方法将写出该 div 但我真的不知道从哪里开始 因为这个坚果比写出标签或字符串的 html 扩展更难破解 表单封装了数据 控
  • 差异算法

    有人可以推荐一些关于 XML 的基于树的 diff 算法的论文 文献 或代码片段 基于 DOM 树 非常感谢 这是一篇关于相同内容的有用论文 http pdf aminer org 000 301 327 x diff an effecti
  • 将 props 传递给 Material UI 样式

    鉴于Card代码如here 如何更新卡片样式或任何材质 UI 样式 const styles theme gt card minWidth 275 对此如下 const styles theme gt card minWidth 275 b
  • Heroku 中使用 OpenCV 的 Python Web 应用程序

    我正在构建一个在后端使用 OpenCV 的 Web 应用程序 我已经在 Ubuntu 上构建了该应用程序 我也在 Windows 上尝试过 并且运行良好 目前 我正在尝试配置 OpenCV 以在 Heroku 上工作 由于无法使用 pip
  • 在 DataFrame.groupby 的情况下,如何根据另一列的最大值获取一列的值

    我有一个看起来像这样的数据框 id YearReleased Artist count 168 2015 Muse 1 169 2015 Rihanna 3 170 2015 Taylor Swift 2 171 2016 Jennifer
  • AngularJS 组复选框验证

    我有一个复选框列表 其中至少有一个是必填的 我尝试通过 AngularJS 验证来实现这一点 但遇到了困难 下面是我的代码 Code goes here for js var app angular module App function
  • C++ 是否可以计算出整个向量? [复制]

    这个问题在这里已经有答案了 我需要计算一个向量 不仅仅是其中的一个元素 而是整个事物 例如 std cout 您可以定义一个实用函数 例如 template
  • 64 位 Windows 上 long 的位大小是多少?

    不久前 有人告诉我long在 64 位机器上不是 64 位 我应该始终使用int 这对我来说没有意义 我看过文档 例如苹果官方网站上的文档 说long为 64 位 CPU 编译时确实是 64 位 我查了一下 64 位 Windows 上的内