__int <size>和“char,short,int,long long int”之间有什么区别?</size>

时间:2013-02-09 05:12:30

标签: c++ visual-c++ definition

我很惊讶地发现我的C ++编译器支持__int8__int16__int32__int64;但我发现它们相当于charshortintlong long。他们之间有什么区别?

sizeof(__int8) == sizeof(char) == 1
sizeof(__int16) == sizeof(short) == 2
sizeof(__int32) == sizeof(int) == 4
sizeof(__int64) == sizeof(long long) == 8

1 个答案:

答案 0 :(得分:4)

原始类型intcharshortlong等的大小是实现定义的,可能因系统而异。所有你得到保证的是

  • sizeof(char) == 1
  • sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)

因此,许多平台提供自己的自定义,非可移植类型,保证是给定的大小。例如,我相信Microsoft保证__int8总是8位,__int16总是16位,等等。

希望这有帮助!