【问题标题】:How does the compiler know which type to return编译器如何知道返回哪种类型
【发布时间】:2015-12-31 10:57:09
【问题描述】:

This article 说:

如果我在函数中编写这样的代码行:return 1.4,我和编译器都很明显该函数返回一个 double

这对我来说并不明显:返回类型可以是 float、double 或 long double。编译器如何在这三种类型之间进行选择?

【问题讨论】:

  • 如所述here no suffixdoublefFfloatlLlong double

标签: c++ c++14 auto type-deduction


【解决方案1】:

不,1.4doublefloat 写成1.4f

75         // int
75u        // unsigned int
75l        // long
75ul       // unsigned long 
75lu       // unsigned long

3.14159L   // long double
6.02e23f   // float  

Source

【讨论】:

  • 抱歉吹毛求疵:DoubleFloat 不是标准类型,但 doublefloat 是。 C++ 区分大小写。
  • @cad 在第一次我用大写写 float 因为它是一个句子的开头然后我把它放在代码配额内然后我无意识地将 double 转换为 Double 与 Float 相同:D ..感谢您的通知;)
【解决方案2】:

1.4double 文字,而不是 float 文字 1.4flong double 文字 1.4l

因此,编译器可以明确地推断出类型。

【讨论】:

    【解决方案3】:

    我猜你问的是auto返回类型推导,否则返回类型就是你声明的任何类型。

    答案很简单:文字 1.4 的类型为 double,而不是 floatlong double,因此将推导出 double。就这么简单。

    【讨论】:

      【解决方案4】:

      因为 1.4(或任何其他浮点数)是 double。要使其成为float,您需要编写1.4f,而long double1.4L

      【讨论】:

        【解决方案5】:

        1.4在这里是double,任何简单的小数点都是double

        float 将是 1.4f

        long double将是1.4L

        1.4  // double
        1.4f // float
        1.4L // long double
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多