编译器如何知道哪种类型 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.4
是 double
。 float
写成1.4f
75 // int
75u // unsigned int
75l // long
75ul // unsigned long
75lu // unsigned long
3.14159L // long double
6.02e23f // float
1.4
是一个 double
文字,与 float
文字 1.4f
和 long double
文字相对 1.4l
.
因此,编译器可以明确地推断出类型。
因为 1.4(或任何其他浮点数)是 double
。要使它成为 float
你需要写 1.4f
,而 long double
是 1.4L
.
我猜你问的是 auto
return 类型推导,否则 return 类型就是你声明的类型。
答案很简单:文字 1.4
的类型为 double
,而不是 float
或 long double
,因此将推导出 double
。就这么简单。
1.4在这里是double,任何简单的小数点数都是double.
浮动 将是 1.4f
long double 将是 1.4L
1.4 // double
1.4f // float
1.4L // long double
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.4
是 double
。 float
写成1.4f
75 // int
75u // unsigned int
75l // long
75ul // unsigned long
75lu // unsigned long
3.14159L // long double
6.02e23f // float
1.4
是一个 double
文字,与 float
文字 1.4f
和 long double
文字相对 1.4l
.
因此,编译器可以明确地推断出类型。
因为 1.4(或任何其他浮点数)是 double
。要使它成为 float
你需要写 1.4f
,而 long double
是 1.4L
.
我猜你问的是 auto
return 类型推导,否则 return 类型就是你声明的类型。
答案很简单:文字 1.4
的类型为 double
,而不是 float
或 long double
,因此将推导出 double
。就这么简单。
1.4在这里是double,任何简单的小数点数都是double.
浮动 将是 1.4f
long double 将是 1.4L
1.4 // double
1.4f // float
1.4L // long double