【问题标题】:What does "type domain" and "real type" mean?“类型域”和“真实类型”是什么意思?
【发布时间】:2016-07-27 00:18:36
【问题描述】:

引自 N1570:

6.3.1.8 常用算术转换

1 许多期望算术类型的操作数的运算符导致 转换和产生结果类型以类似的方式。目的是为了 为操作数和结果确定一个通用的真实类型。为了 指定的操作数,每个操作数都被转换,不改变 type domain,对应的real type是常见的real type。除非另有明确说明,常见的 real type也是结果对应的real type,其type domain是操作数的type domain如果他们 是相同的,否则复杂。这种模式被称为通常 算术转换:

  • 首先,如果任一操作数对应的实数类型为long double,则转换另一操作数,不改变类型 域,转换为对应的真实类型为long double的类型。
  • 否则,......

什么是“类型域”和“真实类型”?我搜索了文档,但没有找到定义。

【问题讨论】:

  • 类型域是整数、浮点数、结构还是联合?
  • RTFineM:6.2.5p18。一个简单的文本搜索……
  • @Olaf 18 Integer and floating types are collectively called arithmetic types. Each arithmetic type belongs to one type domain: the real type domain comprises the real types, the complex type domain comprises the complex types.,但这并没有明确定义“类型域”。
  • 另外,here 是一个关于 C11 类型的漂亮图表。
  • “真实”一词是在数学意义上使用的。在算术类型中,“实数”类型是“复数”类型的替代品。然而,这样说并不意味着复杂类型在任何方面都比实际类型更标准或更传统。它们同样由语言标准定义,并且真正的类型远,更多地使用。

标签: c types language-lawyer c11


【解决方案1】:

6.2.5 N1570 的类型如下:

整数和浮点类型统称为算术类型。每个算术类型属于一个类型域实类型域包括实类型复类型域包括复合体 类型

然后进一步:

一共有三个 真实浮动类型 ,指定为 float , double , 和 long double。 42) 类型的值集 float 是一组值的子集 类型 双倍的 ;类型的值集 双倍的 是一组值的子集 类型 长双

一共有三个 复杂类型,指定为 float _Complex , double _Complex,和 long double _Complex.

(请注意,标准并没有说明复杂整数类型,因此标准中定义的所有整数类型都属于实类型域)。

因此很明显,域指的是real numbers ℝcomplex numbers ℂ的数学概念。


基本上,您问题中的摘录是说,例如,如果您将实数与虚数或复数相加,则结果也是复数;并且操作数被提升为操作前最大操作数的宽度。

【讨论】:

    猜你喜欢
    • 2015-02-20
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 2016-09-15
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多