gpt4 book ai didi

C 数据类型 'long' - 在 Intel x86 64 位机器上

转载 作者:太空宇宙 更新时间:2023-11-04 05:53:30 24 4
gpt4 key购买 nike

在 Intel 文档中我读到对于 Intel x86 64 位机器,C 数据类型“long”的大小是 8 字节。但是,当我在我的计算机上运行这个简单的代码时,它有 intel(R) core(TM)i3 - 64 位处理器:

printf("long 的大小,是 %d", sizeof(long));

控制台输出是 4(而不是 8)!任何人都可以解释这种差异或相同的原因。谢谢

最佳答案

所有 C 标准都说 long 必须至少为 32 位,这意味着 sizeof(long) >= 4(sizeof< 的单位 称为一个字节,在您可能遇到的几乎所有平台上都有 8 位)。

每个ABI定义诸如这些类型的大小之类的东西。您需要具有兼容的 ABI 来链接使用不同程序编译的代码,因此总的来说,每种类型的处理器每种操作系统都有一个标准的 ABI。这只是一种趋势:某些操作系统具有多个 ABI,具体取决于所使用的编译器和标准库。

处理器制造商通常会定义 ABI,但随后由操作系统和编译器供应商决定是否遵守它。

在 x86_64 上,Intel 指定了 64 位 long。这是大多数操作系统所做的,但有一个主要异常(exception):Windows。在 Windows 上,标准 ABI(系统库和供应商提供的开发工具使用的 ABI)有一个 32 位的 long。 64 位类型可用作 int64_tlong long

关于C 数据类型 'long' - 在 Intel x86 64 位机器上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33249953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com