08.05 那些關於不知道數據類型佔的字節數,這篇文章不能錯過

(一)32位平臺:

分為有符號型與無符號型。

有符號型:

short 在內存中佔兩個字節,範圍為-2^15~(2^15-1)

int 在內存中佔四個字節,範圍為-2^31~(2^31-1)

long在內存中佔四個字節,範圍為-2^31~2^31-1

無符號型:最高位不表示符號位

unsigned short 在內存中佔兩個字節,範圍為0~2^16-1

unsigned int 在內存中佔四個字節,範圍為0~2^32-1

unsigned long在內存中佔四個字節,範圍為0~2^32-1

實型變量:

分單精度 float 和雙精度 double 兩種形式:

float:佔四個字節,提供7~8位有效數字。

double: 佔八個字節,提供15~16位有效數字。

(二)16位平臺:

1)整型(基本型):類型說明符為int,在內存中佔2個字節。

2)短整型:類型說明符為short int或short。所佔字節和取值範圍均與整型(基本型)相同。

3)長整型:類型說明符為long int或long,在內存中佔4個字節。

無符號型:類型說明符為unsigned。

無符號型又可與上述三種類型匹配而構成:

各種無符號類型量所佔的內存空間字節數與相應的有符號類型量相同。但由於省去了符號位,故不能表示負數。

實型變量:

分為單精度(float型)、雙精度(double型)和長雙精度(long double型)三類。

單精度型佔4個字節(32位)內存空間,其數值範圍為3.4E-38~3.4E+38,只能提供七位有效數字。

雙精度型佔8 個字節(64位)內存空間,其數值範圍為1.7E-308~1.7E+308,可提供16位有效數字。

長雙精度型16 個字節(128位)內存空間,可提供18-19位有效數字。

和機器字長及編譯器有關係:

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

1 sizeof(short int)<=sizeof(int)

2 sizeof(int)<=sizeof(long int)

3 short int至少應為16位(2字節)

4 long int至少應為32位。

unsigned 是無符號的意思。

更詳細學習資料的在我的頭條文章仔細的看下,只是粗略的概述了一遍,當然更詳細具體的可以自己去找資料,當然也可以加我的群哈368282579,可以交流的,群內也有針對0基礎的新手資料,項目資源也是很豐富的,希望對各位有所幫助哈

例如:

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位編譯器

(看這裡就行了,與16位機,64位機比較,粗體type為不同的,其餘的都是相同)

char :1個字節

char*(即指針變量): 4個字節(32位的尋址空間是2^32, 即32個bit,也就是4個字節。同理64位編譯器)(16位機,32位機,64位機各不相同)

short int : 2個字節

int: 4個字節(16位機是2B,32位&64位是4B)

unsigned int : 4個字節(16位機是2B,32位&64位是4B)

float: 4個字節

double: 8個字節

long: 4個字節(16位&32位是4B,64位是8B)

long long: 8個字節

unsigned long: 4個字節(16&32位是4B,64位是8B)

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個字節

那些關於不知道數據類型佔的字節數,這篇文章不能錯過

可以加我的群哈368282579,群內也有針對0基礎的新手資料,項目資源


分享到:


相關文章: