資料型別所佔位元組數

2021-08-03 04:42:12 字數 2497 閱讀 9877

(一)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)

3short

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

4long int至少應為32位。

unsigned 是無符號的意思。

例如: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個位元組unsignedlong: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個位元組

基本資料型別所佔位元組數

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個位元...

C C 基本資料型別所佔位元組數

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

C C 基本資料型別所佔位元組數

所以int,long int,short int的寬度都可能隨編譯器而異。但有幾條鐵定的原則 ansi iso制訂的 下面給出不同位數編譯器下的基本資料型別所佔的位元組數 16位編譯器 char 1個位元組 char 即指標變數 2個位元組 short int 2個位元組 int 2個位元組 uns...