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
", sizeof(int)); printf("Size of long : %ld Bytes
", 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
因此,從這個例子中我們可以很容易地理解,long資料型別因編譯器而異。那麼,造成這種情況的原因是什麼呢?
CPU透過提供記憶體地址暫存器(MAR)的地址從主存(RAM)呼叫資料。當找到位置後,它將被傳輸到記憶體緩衝暫存器(MBR)。資料儲存到CPU暫存器中以供進一步使用。因此,資料匯流排的尺寸決定了CPU暫存器的尺寸。對於32位系統,它一次只能呼叫4位元組資料。如果資料大於32位,則需要兩個週期。因此,對於較小的資料,它沒有任何區別。
廣告