ISO C11標準の状態:
signed char型、short int型、int型、long int型、および長い長いintとして指定された5つの標準符号付き整数型があります。
それぞれの符号付き整数型には、同じ量の記憶領域(符号情報を含む)を使用し、同じ配置要件を持つ、対応する(しかし異なる)符号なし整数型(キーワード符号なし) 。
しかし基本型と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つの型指定子は、各宣言の宣言指定子と、各struct宣言と型名の指定子修飾子リストに与えられます。型指定子の各リストは、以下のマルチセット(項目ごとに複数のマルチセットがある場合はコンマで区切られます)のいずれかになります。型指定子は任意の順序で出現する可能性があり、他の宣言指定子と混在する可能性があります。
その後、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
家庭では絶対にしないでください。 –
もっと分かりにくい例として、 'typedef int i;'と 'int typedef i;'は等価であることに注意してください。 – Mankarse
@Mankarse、良い点、6.7では、 'typedef'のようなストレージクラス指定子と' int'のような型指定子を並べ替えることができます。野生の中で 'int typedef something 'を見たことが二度見なければなりません。私はほぼ確実に追跡し、 'i'を型名として使用した人を破棄します: – paxdiablo