当前位置:  开发笔记 > 编程语言 > 正文

"复杂浮动"和"浮动复杂"都是有效的C吗?

如何解决《"复杂浮动"和"浮动复杂"都是有效的C吗?》经验,为你挑选了2个好方法。

我的问题很简单:

"复杂浮动"和"浮动复杂"都是有效的C吗?

似乎两者都没有被gcc警告接受.



1> Lundin..:

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

每个声明中的声明说明符中应至少给出一个类型说明符,并在每个结构声明和类型名称的说明符限定符列表中给出.每个类型说明符列表应为以下多个集合之一(以逗号分隔,每个项目有多个多集); 类型说明符可以按任何顺序出现,可能与其他声明说明符混合.

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

float _Complex

double _Complex

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


再举一个例子,有一个小组

unsigned long long, 要么 unsigned 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;
...

这些都意味着同样的事情.


如果您认为上述内容完全不合理,那么您是对的.C语言是为混淆而设计的.理智从来都不是优先事项.
或者"对于语言混淆C,设计是.优先理智从来都不是".

2> melpomene..:

是.一般而言,声明开头的"类型词"的顺序无关紧要:

static const unsigned long int x = 42;

是相同的

long const int unsigned static x = 42;

参考:C99,6.7.2/2

[...]类型说明符可以按任何顺序出现,可能与其他声明说明符混合.

(这两个float_Complex是类型说明符).


N1570说*"在声明中声明说明符开头之外的存储类说明符的放置是一个过时的功能."*,所以在开头的其他地方使用`static`是一个坏主意.
推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有