ISO C11 標準は次のように述べてい6.2.5 Types
ます。
signed char、short int、int、long int、および long long int として指定される 5 つの標準の符号付き整数型があります。
各符号付き整数型には、対応する (ただし異なる) 符号なし整数型 (キーワードunsignedで指定) があり、同じ量のストレージ (符号情報を含む) を使用し、同じ配置要件があります。
ただし、そのセクションには、基本タイプと修飾子が表示される順序に関する義務はありません。unsigned
制御セクションは、標準の後半にあり、6.7.2 Type specifiers
ここで言い換えられています。
型指定子は、、、、、、、、、、、、、、、およびです。void
_ char
_ short
_ int
_ long
_ float
_ double
_ signed
_unsigned
_Bool
_Complex
<struct-or-union-specifier>
<enum-specifier>
<typedef-name>
各宣言の宣言指定子、および各構造体宣言と型名の指定子修飾子リストに、少なくとも 1 つの型指定子を指定する必要があります。型指定子の各リストは、次のマルチセットのいずれかになります (項目ごとに複数のマルチセットがある場合は、コンマで区切ります)。型指定子は任意の順序で発生する可能性があり、他の宣言指定子と混在する可能性があります。
次に、 などのすべてのマルチセットを一覧表示しunsigned long, or unsigned long int
ます。
しかし、そこにある重要なフレーズはです。これは、これらすべてがそのマルチセットに対して有効であることをthe type specifiers may occur in any order
意味し ます。
unsigned long
long unsigned
unsigned long int
unsigned int long
long unsigned int
long int unsigned
int unsigned long
int long unsigned