3

我很惊讶地看到我的 C++ 编译器也支持__int8__int16__int32__int64; 但我只是看到它们等同于char, short,intlong long。它们之间有什么区别?

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

1 回答 1

4

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

  • sizeof(char) == 1, 和
  • sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long).

因此,许多平台都提供了自己的自定义、不可移植的类型,这些类型保证为给定的大小。例如,我相当有信心微软保证__int8始终是 8 位、__int16始终是 16 位等。

希望这可以帮助!

于 2013-02-09T05:18:25.070 回答