リストを1つずつ見ていきましょう。
整数はshort
少なくとも 16 ビット幅です。
つまり、ashort
が 16 ビットのプラットフォーム、17 ビットのプラットフォーム、18 ビットのプラットフォームなどがありますが、17 ビット以下の short を提供できるプラットフォームはありません。
したがって、議論のために、いくつかの異なるプラットフォームを定義しましょう。大文字で名前を付けます。プラットフォーム A から D には 16 ビットshort
、E と F には 32 ビットshort
、プラットフォーム G には 1024 ビットがあるとしますshort
。これらのプラットフォームはすべて、これまでのところ準拠しています。
整数は、int
少なくとも short と同じ大きさです。
つまり、int
より小さくすることはできませんshort
が、任意に大きくすることはできます。たとえば、上記のプラットフォーム A から D はすべて 16 ビットint
を使用できますが、プラットフォーム E と F はint
少なくとも 32 ビットにする必要があり、プラットフォーム F は少なくとも 1024 ビットにする必要があります。
A が 16 ビットを選択し、B、C、E が 32 ビットを選択し、D と F が 64 ビットを選択し、G が再び 1024 ビットを選択したとします。これらの選択はすべて、これまでのルールを満たしています。
long
整数は少なくとも 32 ビット幅で、少なくとも と同じ大きさですint
。
ここで2つの条件があります。まず、long
少なくとも 32 ビットが必要です。したがって、プラットフォーム A でさえlong
、16 ビットのみを選択することはできません。2 番目に、long
よりも短くすることはできません。int
つまり、たとえば、プラットフォーム DF
では 32 ビットを使用できません。プラットフォーム G の場合、最小サイズは 1024 ビットです。long
int
long
したがって、プラットフォーム A、B、および E は 32 ビット長を選択し、プラットフォーム C、D、および F は 64 ビットを選択し、G は 1024 ビットを選択するという選択肢が考えられます。
long long
整数は、少なくとも 64 ビット幅で、少なくとも と同じ大きさですlong
。
もう一度詳しく説明しませんが、プラットフォーム A から F はすべて 64 ビット以上を選択でき、G は 1024 ビット以上を選択できます。
完全を期すために、プラットフォーム A から D は 64 ビットを選択し、E と F は 128 ビットを選択し、G は 1024 ビットを選択すると仮定しましょう。
次に、すべてが有効なプラットフォームの次のリストを取得します (ただし、すべての可能性のある有効なプラットフォームではありません)。
A B C D E F G
short 16 16 16 16 32 32 1024
int 16 32 32 64 32 64 1024
long 32 32 64 64 32 64 1024
long long 64 64 64 64 128 128 1024
プラットフォーム A は典型的な 16 ビット プラットフォームです (ただし、16 ビット プラットフォームが最新であり、long long
まだ正式なタイプではありませんでした)。プラットフォーム B は典型的な 32 ビット プラットフォームですが、多くの 64 ビット プラットフォームも表します。プラットフォーム C も、可能な 64 ビット プラットフォームの実装です。私が信じていない他のすべてはどこでも使用されていますが、とにかく有効な実装です。
ご覧のとおり、たとえば、一部のプラットフォームでint
は と同じサイズでshort
あり、他のプラットフォームでは と同じサイズlong
であり、さらに他のプラットフォームでは、その中間であり、一部のプラットフォームshort
でlong
は同じサイズである場合があります。int
も同じサイズである必要があります。