"complex float"和"float complex"都是有效的C吗?

  • 本文关键字:float complex 有效 c
  • 更新时间 :
  • 英文 :


我的问题很简单:

"complex float"one_answers"float complex"都是有效的C吗?

两者似乎都被gcc在没有警告的情况下接受。

complex是complex.h中的一个宏,它扩展为类型说明符_Complex。这与所有其他类型说明符一样,例如int, bool, double。对于属于同一个"组"的所有类型说明符,可以按不同的顺序组合它们。这由C11 6.7.2规定,强调矿:

声明中应至少给定一个类型说明符每个声明中的说明符,以及中的说明符限定符列表每个结构声明和类型名称。每个类型说明符列表应为以下多集之一(当每个项目有一个以上的多集合)类型说明符可能以任何顺序出现,可能与其他声明混合说明符。

然后是类型说明符的有效组列表,我们在其中找到

  • float _Complex
  • double _Complex

意味着同一组中说明符的任何排列都是好的。


举另一个例子,有一个组

  • unsigned long longunsigned long long int

这给了我们以下可能的组合:

unsigned long long x;
long unsigned long y;
long long unsigned z;

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;
...

这些都意味着相同的东西。

是。一般来说,声明开头"打字单词"的顺序无关紧要:

static const unsigned long int x = 42;

与相同

long const int unsigned static x = 42;

参考:C99,6.7.2/2

〔…〕类型说明符可能以任何顺序出现与其他声明说明符混合。

(float_Complex都是类型说明符。)

相关内容

  • 没有找到相关文章

最新更新