資料型別編譯配置
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位處理器?...