C語言中幾種型別所佔位元組數
阿新 • • 發佈:2019-01-23
最近經常會遇到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