C 中資料型別位元組數和機器字長關係

2021-06-21 06:08:03 字數 1992 閱讀 6905

機器字長:是指計算機進行一次整數運算所能處理的二進位制資料的位數(整數運算即定點整數運算)。機器字長也就是運算器進行定點數運算的字長,通常也是cpu內部資料通路的寬度。現在一般為32位即4個位元組,也有64位和16位的。

算術型別的儲存空間按照機器而定。一般,short型別為半個機器字長,int為乙個機器字長,long為1或2個機器字長,float為乙個機器字長,double為兩個字,long double用3或4個字長。c++標準規定的是每個算術型別的最小儲存空間,但其並不阻止編譯器用更大的儲存空間。如果要保證移植性,盡量用__int16 __int32 __int64吧,或者自己typedef int int32一下。

資料型別名稱

位元組數

別名

取值範圍

int

*signed,signed int

由作業系統決定,即與作業系統的"字長"有關

unsigned int

*unsigned

由作業系統決定,即與作業系統的"字長"有關

__int8

1char,signed char

–128 到 127

__int16

2short,short int,signed short int

–32,768 到 32,767

__int32

4signed,signed int

–2,147,483,648 到 2,147,483,647

__int648無

–9,223,372,036,854,775,808 到 9,223,372,036,854,775,807

bool1無

false 或 true

char

1signed char

–128 到 127

unsigned char1無

0 到 255

short

2short int,signed short int

–32,768 到 32,767

unsigned short

2unsigned short int

0 到 65,535

long

4long int,signed long int

–2,147,483,648 到 2,147,483,647

long long

8none (but equivalent to __int64)

–9,223,372,036,854,775,808 到 9,223,372,036,854,775,807

unsigned long

4unsigned long int

0 到 4,294,967,295

enum*無

由作業系統決定,即與作業系統的"字長"有關

float4無

3.4e +/- 38 (7 digits)

double8無

1.7e +/- 308 (15 digits)

long double8無

1.7e +/- 308 (15 digits)

wchar_t

2__wchar_t

0 到 65,535

(p:指標的大小為定值4個位元組)

資料型別位元組數

一 程式執行平台 不同的平台上對不同資料型別分配的位元組數是不同的。個人對平台的理解是cpu os compiler,是因為 1 64位機器也可以裝32位系統 x64裝xp 2 32位機器上可以有16 32位的編譯器 xp上有tc是16位的,其他常見的是32位的 3 即使是32位的編譯器也可以弄出6...

c 基礎資料型別位元組數

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

資料型別所佔位元組數

一 32位平台 分為有符號型與無符號型。有符號型 short 在記憶體中佔兩個位元組,範圍為 2 15 2 15 1 int 在記憶體中佔四個位元組,範圍為 2 31 2 31 1 long在記憶體中佔四個位元組,範圍為 2 31 2 31 1 無符號型 最高位不表示符號位 unsigned sho...