3

私の C++ コンパイラが__int8__int16__int32、および__int64;もサポートしていることに驚いています。charしかし、それらは、shortint、および と同等であることがわかりますlong 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たとえば、Microsoftは常に 8 ビット、__int16常に 16 ビットなどを 保証していると確信しています。

お役に立てれば!

于 2013-02-09T05:18:25.070 に答える