C 和 C++ 中需要“long”資料型別嗎?


在 C 或 C++ 中,有四種不同的資料型別用於整數型別資料。這四種資料型別是 short、int、long 和 long long。每種資料型別佔用不同的記憶體空間。大小在不同的架構和不同的作業系統中有所不同。有時 int 佔用 4 位元組,有時佔用 2 位元組。編譯器也是如此。因此我們可以使用交叉編譯器。

交叉編譯器基本上是一種編譯器,它能夠為當前平臺以外的平臺編譯程式碼。

因此,如果我們想在 32 位系統和 64 位系統中編譯以下程式碼,它將生成不同的輸出。

示例

#include<stdio.h>
int main() {
   printf("Size of int : %ld Bytes\n", sizeof(int));
   printf("Size of long : %ld Bytes\n", sizeof(long));
   printf("Size of long long : %ld Bytes", sizeof(long long));
}

輸出

Size of int : 4 Bytes
Size of long : 4 Bytes
Size of long long : 8 Bytes

輸出

Size of int : 4 Bytes
Size of long : 8 Bytes
Size of long long : 8 Bytes

因此,從這個例子中我們可以很容易地理解 long 資料型別因編譯器而異。那麼,其背後的原因是什麼呢?

CPU 透過提供記憶體地址暫存器 (MAR) 的地址來從主記憶體 (RAM) 呼叫資料。找到位置後,將其傳輸到記憶體緩衝暫存器 (MBR)。資料儲存到 CPU 暫存器中以供進一步使用。因此,資料匯流排的大小決定了 CPU 暫存器的尺寸。對於 32 位系統,它一次只能呼叫 4 位元組的資料。如果資料大於 32 位,則需要兩個週期。因此,對於較小的資料,它沒有任何區別。

更新於:2019年7月30日

114 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告