【问题标题】:size of long data type changes in 32 bit & 64 bit compilers [duplicate]32 位和 64 位编译器中长数据类型更改的大小 [重复]
【发布时间】:2016-11-24 16:10:05
【问题描述】:

long 数据类型的大小在 64 位编译器上发生变化。在 32 位编译器上,int 和 long 都有 4 个字节大小。而在 64 位中,它变为 4 和 8 字节。为什么会有这种差异?

【问题讨论】:

  • 这取决于编译器。
  • 你为什么希望它们是一样的??!
  • 在 64 位 Microsoft Windows 上,它们都是 32 位,4 字节。在 Linux 中,long 与指针大小相同。

标签: c operating-system


【解决方案1】:

决定数据大小(位数)的是微控制器内部寄存器的宽度。
软件总是落后于硬件一步,你有一个 64 位处理器并用 32 位编译器甚至 16 位编译器编译你的程序并不罕见(我仍然有 16 位软件在 64-位处理器)。

理想的情况是当您的编译器具有功能目标时,可以充分发挥您所拥有的处理器的功能。

今天,尽管大多数计算机都有 64 位处理器,但并非所有编译器都准备好使用硬件的全部功能。

根据微软的说法,他们的工具继续区分 32 位和 64 位代码,仅在指针的宽度上,并保持数据的宽度。

但是,没有什么能阻止您使用充分利用处理器内部寄存器的 64 位的编译器。

【讨论】:

    猜你喜欢
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 2018-03-10
    • 2011-04-12
    • 2014-08-15
    • 2023-03-03
    • 2014-01-12
    相关资源
    最近更新 更多