Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 重载函数的调用不明确,double vs float_C++_Double_Overloading - Fatal编程技术网

C++ 重载函数的调用不明确,double vs float

C++ 重载函数的调用不明确,double vs float,c++,double,overloading,C++,Double,Overloading,每当我运行此代码时 #include <iostream> int add(int x, int y){ return x+y; } float add(float x, float y){ return x+y; } int main(){ using namespace std; add(1.11, 1.11); return 0; } 我认为1.11显然是一个浮点,而不是一个整数。当我将float更改为double时,程序工作

每当我运行此代码时

#include <iostream>

int add(int x, int y){
    return x+y;
} 

float add(float x, float y){
    return x+y;
}

int main(){
    using namespace std;
    add(1.11, 1.11);
    return 0;
}
我认为1.11显然是一个浮点,而不是一个整数。当我将
float
更改为
double
时,程序工作


<为什么C++调用调用是模糊的?<在C++中,十进制文字的类型如<代码> 1.11 >代码>被定义为双。假设它必须将double转换为
int
float
,这会导致歧义


带有
f
后缀(如
1.11f
)的文本将具有float类型。

我认为1.11显然是一个float,
不,像1.11这样的文本默认为
s。转换必须以任何一种方式进行,现在编译器不确定是哪种方式。虽然您的值可以毫无问题地进入浮点,但这只是语言的工作方式。像1.11这样的文字是双精度的,因为它有一个小数部分(即不是int),除非你明确地说它是一个float@Username“浮动和双浮动”是不同的类型。“保留两位小数”|或
18.cpp: In function ‘int main()’:
18.cpp:24:16: error: call of overloaded ‘add(double, double)’ is ambiguous
  add(1.11, 1.11);
                ^
18.cpp:24:16: note: candidates are:
18.cpp:7:5: note: int add(int, int)
 int add(int x, int y){
     ^
18.cpp:11:7: note: float add(float, float)
 float add(float x, float y){