32位和64位各變數位元組數
阿新 • • 發佈:2019-02-13
Win64, 也就是X64編譯配置下:
char:1位元組;
short:2位元組;
int:4位元組;
long:4位元組;
long long:8位元組;
float:4位元組;
double:8位元組;
long double:8位元組;
wchar_t:2位元組;
bool:1位元組;
char*:8位元組;
bool*:8位元組;
short*:8位元組;
int*:8位元組;
long*:8位元組;
long long*:8位元組;
float*:8位元組;
double*:8位元組;
long double*:8位元組;
wchar_t*:8位元組;
下面是Win32, 也就是X86編譯配置下變數所佔位元組數:
char:1位元組;
short:2位元組;
int:4位元組;
long:4位元組;
longlong:8位元組;
float:4位元組;
double:8位元組;
long double:8位元組;
wchar_t:2位元組;
bool:1位元組;
char*:4位元組;
bool*:4位元組;
short*:4位元組;
int*:4位元組;
long*:4位元組;
long long*:4位元組;
float*:4位元組;
double*:4位元組;
long double*:4位元組;
wchar_t*:4位元組;
總結:經上述比較,一般變數在X86和X64系統下長度沒什麼區別,區別在於指標的 定址範圍從32位增加到了64位。如果考慮對64位系統下程式的相容性,指標是唯一需要注意的地方。從32位系統過渡到64位系統不同於從16位系統過渡 到32位系統,因為DOS系統下int只有2個位元組,而Windows系統下int是4個位元組,過渡到64位系統後int的位元組數沒有增加。如果使用 Windows系統程式設計,支援64位需要Visual Studio 2005/2008均可,而早期版本是不支援64位平臺的。
char:1位元組;
short:2位元組;
int:4位元組;
long:4位元組;
long long:8位元組;
float:4位元組;
double:8位元組;
long double:8位元組;
wchar_t:2位元組;
bool:1位元組;
char*:8位元組;
bool*:8位元組;
short*:8位元組;
int*:8位元組;
long*:8位元組;
long long*:8位元組;
float*:8位元組;
double*:8位元組;
long double*:8位元組;
wchar_t*:8位元組;
下面是Win32, 也就是X86編譯配置下變數所佔位元組數:
char:1位元組;
short:2位元組;
int:4位元組;
long:4位元組;
longlong:8位元組;
float:4位元組;
double:8位元組;
long double:8位元組;
wchar_t:2位元組;
bool:1位元組;
char*:4位元組;
bool*:4位元組;
short*:4位元組;
int*:4位元組;
long*:4位元組;
long long*:4位元組;
float*:4位元組;
double*:4位元組;
long double*:4位元組;
wchar_t*:4位元組;
總結:經上述比較,一般變數在X86和X64系統下長度沒什麼區別,區別在於指標的 定址範圍從32位增加到了64位。如果考慮對64位系統下程式的相容性,指標是唯一需要注意的地方。從32位系統過渡到64位系統不同於從16位系統過渡 到32位系統,因為DOS系統下int只有2個位元組,而Windows系統下int是4個位元組,過渡到64位系統後int的位元組數沒有增加。如果使用 Windows系統程式設計,支援64位需要Visual Studio 2005/2008均可,而早期版本是不支援64位平臺的。