2016-11-24 72 views
-2

64位編譯器上長數據類型的更改大小。在32位編譯器上,int &長有4個字節大小。而在64位中,它更改爲8個字節。爲什麼這種差異?32位和64位編譯器中長數據類型更改的大小

+1

這取決於編譯器。 –

+1

你爲什麼期望它們是相同的? –

+1

在64位Microsoft Windows上,它們都是32位,4字節。在Linux中,「long」與指針的大小相同。 –

回答

-2

什麼決定了數據的大小(位數)是微控制器內部寄存器的寬度。
軟件始終是硬件的一個步驟,並不罕見,你有一個64位的處理器,並用32位編譯器或甚至16位編譯器編譯你的程序(我仍然有16位軟件運行64位處理器)。

理想的情況是,當您擁有一個具有功能目標的編譯器以獲得您擁有的處理器的全部功能時。

今天,儘管大多數計算機都有64位處理器,但並非所有編譯器都準備好使用硬件的全部功能。根據微軟的說法,他們的工具繼續區分32位到64位的代碼,只在指針的寬度上,並且保持數據的寬度。

但是,沒有什麼能阻止您使用充分利用處理器內部寄存器64位的編譯器。