1. 程式人生 > >C語言中幾種型別所佔位元組數

C語言中幾種型別所佔位元組數

最近經常會遇到C語言中各型別變數所佔位元組數的問題,索性在這裡做一個整理總結。
其實C標準並沒有具體給出規定哪個基本型別應該是多少個位元組數,而且這個也與OS、編譯器有關,比如同樣是在32位作業系統,VC++的編譯器下int型別為4個位元組,而在tuborC下則是2個位元組。
下面給出一個表格,方便檢視個型別的位元組數:

型別 16位 32 位 64位
char 1 1 1
short int 2 2 2
int 2 4 4
unsigned int 2 4 4
float 4 4 4
double 8 8 8
long 4 4 8
long long 8 8 8
unsigned long 4 4 8

首先來看字元型別,這裡單指char , char變數在記憶體中儲存的是字元對應的ASCII碼值。所以長度也是固定的,不管在哪種編譯器下,均為1個位元組。

再來看 浮點型別,C中的浮點型別有倆種,float和double,與整數不同的是,浮點數的長度適中的固定的,float佔用4個位元組,double佔用8個位元組。

最後來看 整型型別,查閱資料後發現雖然16位、32位或者64位的機子各種型別並不一樣,但有幾條規則(ANSI/ ISO制定):

  • short 至少佔用2個位元組
  • int 建議為一個機器字長,32位環境下為4位元組,64位環境下為8位元組
  • short 的長度不能大於int, long 的長度不能小於int