在 C 語言中,不同資料類型佔用的記憶體大小可能因編譯器與平台而異。sizeof 運算子可在編譯時期靜態計算類型或變數所佔用的位元組數,是撰寫可移植程式碼的重要工具。
#include <stdio.h>
int main() {
printf("在我的電腦上,各種基本類型所佔用的位元組長度:\n");
printf("int 佔用的位元組長度:%zu\n", sizeof(int));
printf("long 佔用的位元組長度:%zu\n", sizeof(long));
printf("char 佔用的位元組長度:%zu\n", sizeof(char));
printf("float 佔用的位元組長度:%zu\n", sizeof(float));
printf("double 佔用的位元組長度:%zu\n", sizeof(double));
return 0;
}
sizeof int),但對類型名稱建議加括號。sizeof 回傳 size_t 類型,應使用 %zu 輸出(C99 標準),原始碼使用 %d 在 64 位元系統可能導致輸出錯誤。int 與 long 通常為 4 位元組;64 位元 Linux 下 long 為 8 位元組,Windows 為 4 位元組。int 佔用的位元組長度:4 long 佔用的位元組長度:8 char 佔用的位元組長度:1 float 佔用的位元組長度:4 double 佔用的位元組長度:8
除基本類型,sizeof 也可用於陣列、結構體、指標等:
int arr[10];
printf("陣列大小: %zu\n", sizeof(arr)); // 40 (10 * sizeof(int))
printf("指標大小: %zu\n", sizeof(arr)); // 8 (64位元系統指標大小)
printf("結構體大小: %zu\n", sizeof(struct A)); // 含記憶體對齊後的大小