C 32位和64位编译器中长数据类型更改的大小

C 32位和64位编译器中长数据类型更改的大小,c,operating-system,C,Operating System,长数据类型的大小在64位编译器上更改。在32位编译器上,int和long都有4个字节大小。而在64位中,它变为4和8字节。为什么会有这种差异?决定数据位数大小的是微控制器内部寄存器的宽度。 软件总是比硬件慢一步,这很正常。你有一个64位处理器,用32位编译器甚至16位编译器编译你的程序。我仍然有16位软件在64位处理器上运行 理想的情况是,当您有一个具有目标功能的编译器,以充分利用处理器的全部功能时 今天,尽管大多数计算机都有64位处理器,但并非所有的编译器都能充分利用硬件的强大功能 根据微软的

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

决定数据位数大小的是微控制器内部寄存器的宽度。 软件总是比硬件慢一步,这很正常。你有一个64位处理器,用32位编译器甚至16位编译器编译你的程序。我仍然有16位软件在64位处理器上运行

理想的情况是,当您有一个具有目标功能的编译器,以充分利用处理器的全部功能时

今天,尽管大多数计算机都有64位处理器,但并非所有的编译器都能充分利用硬件的强大功能

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


然而,并没有什么可以阻止您使用一个充分利用处理器内部寄存器64位的编译器

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