32位和64位各變數位元組數

2021-08-26 09:24:27 字數 2280 閱讀 2514

資料型別編譯配置

x86x64

char

1字元1字元

short

2字元2字元

int4字元

4字元long

4字元4字元

longlong

8字元8字元

float

4字元4字元

double

8字元8字元

long double

8字元8字元

wchar_t

2字元2字元

bool

1字元1字元

char*

4字元8字元

bool*

4字元8字元

short*

4字元8字元

int*

4字元8字元

long*

4字元8字元

long long*

4字元8字元

float*

4字元8字元

double*

4字元8字元

long double*

4字元8字元

wchar_t*

4字元8字元

總結:經上述比較,一般變數在x86和x64系統下長度沒什麼區別,區別在於

指標的 定址範圍從32位增加到了64位。如果考慮對64位系統下程式的相容性,指標是唯一需要注意的地方。從32位系統過渡到64位系統不同於從16位系統過渡 到32位系統,因為dos系統下int只有2個位元組,而windows系統下int是4個位元組,過渡到64位系統後int的位元組數沒有增加。如果使用 windows系統程式設計,支援64位需要visual studio 2005/2008/2010/2012均可,而早期版本是不支援64位平台的。

2位,64位會有下面4種情況。(cpu現在一般都是64位的 了)

32位系統,32位編譯:int --4位元組  dword64 -- 8位元組    指標 -- 4位元組

32位系統,64位編譯(程式不能執行)

64位系統,32位編譯:int --4位元組  dword64 -- 8位元組    指標 -- 4位元組

64位系統,64位編譯:int --4位元組  dword64 -- 8位元組    指標 -- 8位元組

1 位元組 = 8 bit  32位,64位都一樣。

另外補充兩個概念:

位址空間沙箱:程序可用的位址空間限制在最底部的2gb中。

另乙個沙箱:作業 ---針對程序。

測試**:

[html]view plain

copy

int iintlen,ishortlen,ilonglen,iwordlen,idwordlen,idword64len;  

iintlen

= sizeof

(int);  

ishortlen

= sizeof

(short);  

ilonglen

= sizeof

(long);  

iwordlen

= sizeof

(word);  

idwordlen

= sizeof

(dword);  

idword64len

= sizeof

(dword64);  

cstring str;  

str.format(_t("intlen

=%d,

shortlen

=%d,

longlen

=%d,

wordlen

=%d,

dwordlen

=%d,

dword64len

=%d"),iintlen,ishortlen,ilonglen,iwordlen,idwordlen,idword64len);  

messagebox(str);  

int icharplen,iintplen;  

char * pchar

= null

;  int * pint

= null

;  icharplen

= sizeof

(pchar);  

iintplen

= sizeof

(pint);  

str.format(_t("pchar

= %d,

pint

= %d"),icharplen,iintplen);  

messagebox(str);  

32位 64位 各型別位元組數

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 ...

32位和64位系統區別及int位元組數

一 64位系統和32位有什麼區別?1 64bit cpu擁有更大的定址能力,最大支援到16gb記憶體,而32bit只支援4g記憶體 2 64位cpu一次可提取64位資料,比32位提高了一倍,理論上效能會提公升1倍。但這是建立在64bit作業系統,64bit軟體的基礎上的。什麼是64位處理器?之所以叫...

32位和64位系統區別及int位元組數

url 一 64位系統和32位有什麼區別?1 64bit cpu擁有更大的定址能力,最大支援到16gb記憶體,而32bit只支援4g記憶體 2 64位cpu一次可提取64位資料,比32位提高了一倍,理論上效能會提公升1倍。但這是建立在64bit作業系統,64bit軟體的基礎上的。什麼是64位處理器?...