的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