1. 程式人生 > >C/C++中基本資料型別在不同系統中所佔空間大小

C/C++中基本資料型別在不同系統中所佔空間大小

關於這個基本的問題,很早以前就很清楚了,C標準中並沒有具體給出規定那個基本型別應該是多少位元組數,而且這個也與機器、OS、編譯器有關,比如同樣是在32bits的作業系統系,VC++的編譯器下int型別為佔4個位元組;而tuborC下則是2個位元組。

所以int,long int,short int的寬度都可能隨編譯器而異。但有幾條鐵定的原則(ANSI/ISO制訂的):

  • sizeof(short int)<=sizeof(int)

  • sizeof(int)<=sizeof(long int)

  • short int至少應為16位(2位元組)

  • long int至少應為32位。

下面給出不同位數編譯器下的基本資料型別所佔的位元組數:



16位編譯器


char :1個位元組
char*(即指標變數): 2個位元組
short int : 2個位元組
int:  2個位元組
unsigned int : 2個位元組
float:  4個位元組
double:   8個位元組
long:   4個位元組
long long:  8個位元組
unsigned long:  4個位元組


32位編譯器


char :1個位元組
char*(即指標變數): 4個位元組(32位的定址空間是2^32, 即32個bit,也就是4個位元組。同理64位編譯器)
short int : 2個位元組
int:  4個位元組
unsigned int : 4個位元組
float:  4個位元組
double:   8個位元組
long:   4個位元組


long long:  8個位元組
unsigned long:  4個位元組


64位編譯器

char :1個位元組
char*(即指標變數): 8個位元組
short int : 2個位元組
int:  4個位元組
unsigned int : 4個位元組
float:  4個位元組
double:   8個位元組
long:   8個位元組
long long:  8個位元組
unsigned long:  8個位元組