“类型域”和“真实类型”是什么意思?

时间:2016-04-06 14:14:33

标签: c types language-lawyer c11

引自N1570:

  

6.3.1.8通常的算术转换

     

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

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

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

1 个答案:

答案 0 :(得分:3)

6.2.5 N1570的类型如下:

  

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

然后进一步:

  

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

  

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

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

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

基本上你的问题中的摘录说的是,如果你添加一个带有虚数或复数的实数,结果也是一个复数;并且操作数在操作之前被提升到最大操作数的宽度。