编译器如何知道哪种类型 return

How does the compiler know which type to return

This article 说:

If I write a line of code like this inside a function: return 1.4, It is obvious to both me and the compiler that the function is returning a double.

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

不,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

1.4 是一个 double 文字,与 float 文字 1.4flong double 文字相对 1.4l.

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

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

我猜你问的是 auto return 类型推导,否则 return 类型就是你声明的类型。

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

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

浮动 将是 1.4f

long double 将是 1.4L

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