跳轉到內容

程式設計基礎/Sizeof 運算子

來自華夏公益教科書,開放的書籍,為一個開放的世界

對 sizeof 運算子的解釋,以及在 C++ 程式語言中使用的示例。

每個資料項,常量和變數,不僅具有資料型別,而且資料型別決定了該項將在計算機記憶體中使用多少位元組。每種資料型別的尺寸因所使用的編譯器和計算機而異。這種影響被稱為機器依賴。此外,語言升級也帶來了一些尺寸變化。在 "C" 中,int 資料型別在 Intel 相容中央處理器 (cpu) 機器上分配了 2 位元組的記憶體儲存空間。在 "C++" 中,int 分配了 4 位元組。

有一個名為 "sizeof (… )" 的運算子,它是一個一元運算子,也就是說它只有一個運算元。運算元位於運算子的右側,如果它是一個數據型別,則放在括號內。運算元可以是任何資料型別(包括透過 typedef 建立的型別)。如果運算元是識別符號名稱,則不需要放在括號內。它對變數和記憶體常量識別符號名稱都有效。該運算子的獨特之處在於它在編譯時對全域性作用域的項進行計算,在執行時對區域性作用域的項進行計算。示例

cout << "The size of an integer is: " << sizeof (int);

編譯器將確定特定機器上整數的位元組大小,並實質上用一個值替換 sizeof 運算子。整數通常為 4 位元組長,因此程式碼行將變為

cout << "The size of an integer is: " << 4;

如果您放置一個表示資料儲存區域(變數或記憶體常量)的識別符號名稱,它會檢視識別符號名稱的定義。注意:括號不是必需的,並且通常不包含在識別符號名稱中。

示例 1:帶有變數的 sizeof

[編輯 | 編輯原始碼]
double money;     // variable set up with initialization
    then later on in the program
cout << "The size of money is: " << sizeof money;

編譯器將透過檢視 money 的定義來確定 money 的位元組大小,其中定義了資料型別為 double。特定機器上的 double 資料型別(通常為 8 位元組)將替換程式碼,並將變為

cout << "The size of money is: " << 8;
sizeof
一個運算子,它告訴你資料型別在儲存中佔用多少位元組。
華夏公益教科書