int類型比較特殊,具體的字節(jié)數(shù)同機(jī)器字長(zhǎng)和編譯器有關(guān)。如果要保證移植性,盡量用__int16 __int32 __int64吧
__int16、__int32這種數(shù)據(jù)類型在所有平臺(tái)下都分配相同的字節(jié)。所以在移植上不存在問題。
所謂的不可移植是指:在一個(gè)平臺(tái)上編寫的代碼無(wú)法拿到另一個(gè)平臺(tái)上運(yùn)行時(shí),不能達(dá)到期望的運(yùn)行結(jié)果。
例如:在32為平臺(tái)上(所謂32位平臺(tái)是指通用寄存器的數(shù)據(jù)寬度是32)編寫代碼,int 類型分配4個(gè)字節(jié),而在16位平臺(tái)是則分配2個(gè)字節(jié),那么在16位上編譯出來的exe,
其中是為int分配2字節(jié),而在32位平臺(tái)上運(yùn)行時(shí),會(huì)按照4個(gè)字節(jié)來解析,顯然會(huì)出錯(cuò)誤的!!
而對(duì)于非int行,目前為止,所有的類型分配的字節(jié)數(shù)都是兼容的,即不同平臺(tái)對(duì)于同一個(gè)類型分配相同的字節(jié)數(shù)!!
建議:在代碼中盡量避免使用int類型,根據(jù)不同的需要可以用short,long,unsigned int 等代替。
下面是各個(gè)類型一覽表【轉(zhuǎn)】
64位指的是cpu通用寄存器的數(shù)據(jù)寬度是64位的。
數(shù)據(jù)類型名稱 |
字節(jié)數(shù) |
別名 |
取值范圍 |
int |
* |
signed,signed int |
由操作系統(tǒng)決定,即與操作系統(tǒng)的"字長(zhǎng)"有關(guān) |
unsigned int |
* |
unsigned |
由操作系統(tǒng)決定,即與操作系統(tǒng)的"字長(zhǎng)"有關(guān) |
__int8 |
1 |
char,signed char |
–128 到 127 |
__int16 |
2 |
short,short int,signed short int |
–32,768 到 32,767 |
__int32 |
4 |
signed,signed int |
–2,147,483,648 到 2,147,483,647 |
__int64 |
8 |
無(wú) |
–9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
bool |
1 |
無(wú) |
false 或 true |
char |
1 |
signed char |
–128 到 127 |
unsigned char |
1 |
無(wú) |
0 到 255 |
short |
2 |
short int,signed short int |
–32,768 到 32,767 |
unsigned short |
2 |
unsigned short int |
0 到 65,535 |
long |
4 |
long int,signed long int |
–2,147,483,648 到 2,147,483,647 |
long long |
8 |
none (but equivalent to __int64) |
–9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
unsigned long |
4 |
unsigned long int |
0 到 4,294,967,295 |
enum |
* |
無(wú) |
由操作系統(tǒng)決定,即與操作系統(tǒng)的"字長(zhǎng)"有關(guān) |
float |
4 |
無(wú) |
3.4E +/- 38 (7 digits) |
double |
8 |
無(wú) |
1.7E +/- 308 (15 digits) |
long double |
8 |
無(wú) |
1.7E +/- 308 (15 digits) |
wchar_t |
2 |
__wchar_t |
0 到 65,535 |
類型標(biāo)識(shí)符 |
類型說明 |
長(zhǎng)度 (字節(jié)) |
范圍 |
備注 |
char |
字符型 |
1 |
-128 ~ 127 |
-27 ~ (27 -1) |
unsigned char |
無(wú)符字符型 |
1 |
0 ~ 255 |
0 ~ (28 -1) |
short int |
短整型 |
2 |
-32768 ~ 32767 |
2-15 ~ (215 - 1) |
unsigned short int |
無(wú)符短整型 |
2 |
0 ~ 65535 |
0 ~ (216 - 1) |
int |
整型 |
4 |
-2147483648 ~ 2147483647 |
-231 ~ (231 - 1) |
unsigned int |
無(wú)符整型 |
4 |
0 ~ 4294967295 |
0 ~ (232-1) |
float |
實(shí)型(單精度) |
4 |
1.18*10-38 ~ 3.40*1038 |
7位有效位 |
double |
實(shí)型(雙精度) |
8 |
2.23*10-308 ~ 1.79*10308 |
15位有效位 |
long double |
實(shí)型(長(zhǎng)雙精度) |
10 |
3.37*10-4932 ~ 1.18*104932 |
19位有效位
|