complex是complex.h中的一个宏,它扩展为类型说明符_Complex.例如,这表现为所有其他类型说明符int, bool, double.对于属于同一"组"的所有类型说明符,您可以按各种顺序组合它们.这由C11 6.7.2规定,强调我的:
每个声明中的声明说明符中应至少给出一个类型说明符,并在每个结构声明和类型名称的说明符限定符列表中给出.每个类型说明符列表应为以下多个集合之一(以逗号分隔,每个项目有多个多集); 类型说明符可以按任何顺序出现,可能与其他声明说明符混合.
然后是我们找到的类型说明符的有效组列表
float _Complexdouble _Complex
意味着同一组中的说明符的任何排列都很好.
再举一个例子,有一个小组
unsigned long long, 要么unsigned long long int
这给了我们以下可能的组合:
unsigned long long x;
long unsigned long y;
long long unsigned z;
Run Code Online (Sandbox Code Playgroud)
要么
unsigned long long int a;
unsigned long int long b;
unsigned int long long c;
int unsigned long long d;
long unsigned long int e;
long long unsigned int f;
long long int unsigned g;
long unsigned int long h;
...
Run Code Online (Sandbox Code Playgroud)
这些都意味着同样的事情.
是.一般而言,声明开头的"类型词"的顺序无关紧要:
static const unsigned long int x = 42;
Run Code Online (Sandbox Code Playgroud)
是相同的
long const int unsigned static x = 42;
Run Code Online (Sandbox Code Playgroud)
参考:C99,6.7.2/2
[...]类型说明符可以按任何顺序出现,可能与其他声明说明符混合.
(这两个float和_Complex是类型说明符).