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
由操作系统决定,即与操作系统的"字长"有关
__int8
1
char,signed char
–128 127  (256个数)
__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
–9,223,372,036,854,775,808 9,223,372,036,854,775,807
bool
1
false true
char
1
signed char
–128 127
unsigned char
1
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
*
由操作系统决定,即与操作系统的"字长"有关
float
4
3.4E +/- 38 (7 digits)
double
8
字符串长度的正确表示1.7E +/- 308 (15 digits)
long double
8
1.7E +/- 308 (15 digits)
wchar_t
2
__wchar_t
0 65,535

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。