int類型比較特殊,具體的字節數同機器字長和編譯器有關。如果要保證移植性,盡量用__int16 __int32 __int64吧
__int16、__int32這種數據類型在所有平臺下都分配相同的字節。所以在移植上不存在問題。
所謂的不可移植是指:在一個平臺上編寫的代碼無法拿到另一個平臺上運行時,不能達到期望的運行結果
例如:在32為平臺上(所謂32位平臺是指通用寄存器的數據寬度是32)編寫代碼,int 類型分配4個字節,而在16位平臺是則分配2個字節,那么在16位上編譯出來的exe,
其中是為int分配2字節,而在32位平臺上運行時,會按照4個字節來解析,顯然會出錯誤的!!

而對于非int行,目前為止,所有的類型分配的字節數都是兼容的,即不同平臺對于同一個類型分配相同的字節數!!

建議:在代碼中盡量避免使用int類型,根據不同的需要可以用short,long,unsigned int 等代替。

下面是各個類型一覽表【轉】

64位指的是cpu通用寄存器的數據寬度是64位的。

數據類型名稱字節數別名取值范圍
int*signed,signed int操作系統決定,即與操作系統的"字長"有關
unsigned int*unsigned由操作系統決定,即與操作系統的"字長"有關
__int81char,signed char–128 到 127
__int162short,short int,signed short int–32,768 到 32,767
__int324signed,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
bool1false 或 true
char1signed char–128 到 127
unsigned char10 到 255
short2short int,signed short int–32,768 到 32,767
unsigned short2unsigned short int0 到 65,535
long4long int,signed long int–2,147,483,648 到 2,147,483,647
long long8none (but equivalent to __int64)–9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned long4unsigned long int0 到 4,294,967,295
enum*由操作系統決定,即與操作系統的"字長"有關
float43.4E +/- 38 (7 digits)
double81.7E +/- 308 (15 digits)
long double81.7E +/- 308 (15 digits)
wchar_t2__wchar_t0 到 65,535
類型標識符類型說明長度
(字節)
范圍備注
char字符型1-128 ~ 127-27 ~ (27 -1)
unsigned char無符字符型10 ~ 2550 ~ (28 -1)
short int短整型2-32768 ~ 327672-15 ~ (215 - 1)
unsigned short int無符短整型20 ~ 655350 ~ (216 - 1)
int整型4-2147483648 ~ 2147483647-231 ~ (231 - 1)
unsigned int無符整型40 ~ 42949672950 ~ (232-1)
float實型(單精度)41.18*10-38 ~ 3.40*10387位有效位
double實型(雙精度)82.23*10-308 ~ 1.79*1030815位有效位
long double實型(長雙精度)103.37*10-4932 ~ 1.18*10493219位有效位