我很惊讶地发现我的C ++编译器支持__int8
,__int16
,__int32
和__int64
;但我发现它们相当于char
,short
,int
和long long
。他们之间有什么区别?
sizeof(__int8) == sizeof(char) == 1
sizeof(__int16) == sizeof(short) == 2
sizeof(__int32) == sizeof(int) == 4
sizeof(__int64) == sizeof(long long) == 8
答案 0 :(得分:4)
原始类型int
,char
,short
,long
等的大小是实现定义的,可能因系统而异。所有你得到保证的是
sizeof(char) == 1
和sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)
。因此,许多平台提供自己的自定义,非可移植类型,保证是给定的大小。例如,我相信Microsoft保证__int8
总是8位,__int16
总是16位,等等。
希望这有帮助!