【问题标题】:Why does C99 add keywords for complex type?为什么 C99 为复杂类型添加关键字?
【发布时间】:2014-12-21 05:10:22
【问题描述】:

我发现C99添加了_Complex来支持复数运算。但是,我想知道为什么 C99 会为这种与字段相关的功能添加新的关键字(仅对科学计算有用)。通过标准库支持复杂类型不是更好吗?

【问题讨论】:

  • 您不能通过库支持像+ 这样的运算符,C 语法不允许这样做。
  • 当基本原理文档中有客观可验证的答案时,我看不出这是如何“基于意见”的。
  • 标准委员会决定将其视为_Bool 类型(因此如果包含标题,则可以将其用作complex 类型),因为以这种方式使用更自然。请注意,C11(当前标准)的要求较低,特别是可能会定义 __STDC_NO_COMPLEX__,因此 _Complex 类型实际上是可选的。

标签: c c99


【解决方案1】:

您可以参考 C99 基本原理文档,了解做出此决定的原因:

http://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf

在第 42 页,第 16-20 行如下:

C99 的一个新特性:复杂类型被添加到 C 中,作为使 C 适合并吸引一般数值编程的努力的一部分。在某些重要的应用领域中大量使用复数运算。

为了整体效率和与其他编程语言的一致性,复杂类型的底层实现是笛卡尔而不是极坐标。明确说明了实现,以便可以简单明确地定义特征和行为。

因此,潜在的动机似乎是让 C 在数值编程方面更具“吸引力”或竞争力,如果我没记错的话,这个领域仍然由 Fortran 主导。

【讨论】:

  • 不公开 - 帮助吸引 Fortran 程序员转换为 C
猜你喜欢
  • 1970-01-01
  • 2017-11-19
  • 1970-01-01
  • 1970-01-01
  • 2011-01-15
  • 2019-01-09
  • 1970-01-01
  • 2011-11-09
  • 2012-05-09
相关资源
最近更新 更多