C++ 编译器如何区分重载中的float和doubl参数
假设有两个函数C++ 编译器如何区分重载中的float和doubl参数,c++,C++,假设有两个函数 void hello(float x) { cout<<x*x;} void hello (double x) {cout<<x*x;} void hello(float x) {coutDouble 浮点数以f后缀结尾,如5.0f5.0是双精度。double 浮式文件结尾用 f>代码>后缀,如 5.0f < /代码>。 5 > < p> >这里没有歧义。ISOC++标准指定浮点文字,如果不加上 f>代码> / f>代码>或 L>代码> / L/C++
void hello(float x)
{ cout<<x*x;}
void hello (double x)
{cout<<x*x;}
void hello(float x)
{coutDouble
浮点数以f
后缀结尾,如5.0f
5.0
是双精度。double
<>浮式文件结尾用<代码> f>代码>后缀,如<代码> 5.0f < /代码>。<代码> 5 > < p> >这里没有歧义。ISOC++标准指定浮点文字,如果不加上<代码> f>代码> /<代码> f>代码>或<代码> L>代码> /<代码> L/C++ >,在这种情况下,它将被视为<代码>浮点<代码>或long double
,分别属于double
类型
在您的情况下,编译器必须将hello(5.0)
编译为hello(double)
调用
引用n4296第2.13.4/1节:
除非由后缀明确指定,否则浮点文本的类型为double
。后缀f
和f
指定
float
,后缀l
和l
指定long double
。如果缩放值不在可表示的范围内
对于其类型,程序的格式不正确
“ISO+C++标准规定了浮点文字,如果不加上<代码> F>代码> >代码> F 或<代码> L>代码> >代码> L >代码>,在这种情况下,它将被处理为<代码>浮点< /代码>或
hello(5.0)
编译为hello(double)
调用
引用n4296第2.13.4/1节:
除非由后缀明确指定,否则浮点文本的类型为double
。后缀f
和f
指定
float
,后缀l
和l
指定long double
。如果缩放值不在可表示的范围内
对于其类型,程序的格式不正确
你认为