的ISO C11標準規定在6.2.5 Types
:
有五種標準符號整數類型,指定爲符號的字符,短整型,整型,長整型,和long long int類型。
對於每個符號整數類型的,有一個相應的(但不同)的無符號整數類型(與關鍵字無符號指定),其使用存儲(包括符號信息)相同量的並具有相同的對準要求。
但是有在該部分中沒有任務作爲對順序,其中鹼的類型和改性劑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>
。
在每個聲明的聲明說明符中和每個結構聲明和類型名稱的說明符限定符列表中至少應該給出一個類型說明符。類型說明符的每個列表應該是以下多個集合之一(當每個項目有多個多重集時,用逗號分隔);類型說明符可能以任何順序出現,可能與其他聲明說明符混合在一起。
然後繼續列出所有的多重配置,如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