C++ C+中的奇怪错误+;程序

C++ C+中的奇怪错误+;程序,c++,compiler-errors,C++,Compiler Errors,所以我写了一个简单的计算器来学习。但我不能让它工作,因为我有一个奇怪的错误。我尽了我所能,但我无法纠正错误。请看一下并告诉我 #include <iostream> #include <cstdlib> #include <string> using namespace std; double add (double x, double y) { double addition = x+y; return addition; } double sub (do

所以我写了一个简单的计算器来学习。但我不能让它工作,因为我有一个奇怪的错误。我尽了我所能,但我无法纠正错误。请看一下并告诉我

#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;

double add (double x, double y)
{
double addition = x+y;
return addition;
}
double sub (double x ,double y)
{
double subtraction = x-y;
return subtraction;
}
double mul (double x , double y)
{
double multiplication = x*y;
return multiplication;
}
double div (double x, double y)
{
double division = x/y;
return division;
}
int main ()
{
int x; int y; int op;
cout << "Enter a number: ";
cin >> x;
cout << "Enter second number: ";
cin >> y;
cout << "1: Addition,   2: Subtraction, 3: Multiplication,  4: Division" <<   endl;
cout << "What operation you want: ";
cin >> op;
switch (op)
{
case 1:
cout << x << " + " << y << " = " <<  add(x, y);`enter code here`
break;

case 2:
cout << x << " - " << y << " = " << sub(x,y);
break;

case 3:
cout << x << " * " << y << " = " << mul (x,y);
break;
case 4:
cout << x << " / " << y << " = " << div (x,y);
break;
default:
cout << "Invalid operation"
}

}
#包括
#包括
#包括
使用名称空间std;
双加(双x,双y)
{
二次加法=x+y;
返回加法;
}
双接头(双x,双y)
{
双减法=x-y;
返回减法;
}
双mul(双x,双y)
{
双重乘法=x*y;
返回乘法;
}
双分区(双x,双y)
{
双除法=x/y;
回返司;
}
int main()
{
int x;int y;int op;
cout>x;
cout>y;
因为你用了

using namespace std;
您与标准函数发生冲突。具体来说,由于存在重载
std::div_t div(int x,int y);
并且您使用两个整数调用div,因此将调用此函数

通常避免在代码中使用
名称空间std;

在这种情况下,最简单的修复方法是以不同的方式命名函数:

double divide(double x, double y)
{
    double division = x/y;
    return division;
}
由于没有使用两个双精度的stdlib重载,您也可以执行类似操作,以使编译器使用您的函数:

div(static_cast<double>(x),static_cast<double>(y));
div(静态施法(x)、静态施法(y));
另一种方法是将函数放入命名空间中:

namespace ops {
double div(double x, double y) {
    double division = x/y;
    return division;
}
} // namespace ops

...

cout << x << " / " << y << " = " << ops::div(x,y);
名称空间操作{
双分区(双x,双y){
双除法=x/y;
回返司;
}
}//名称空间操作
...

有什么奇怪的错误吗?我的读心能力不太好。就像@πάντα一样ῥεῖ 用在线C++编译器指出,你在这里的代码行的末尾有“输入代码”。首先修复它。@ dRESCHJM现在指出其他错误,我修正了<代码>输入代码< /COD>。我建议使用名称空间STD删除<代码>;< /COD>避免问题和未来类似的问题,即使它需要5。使用标准库中的某些内容时要键入的额外字符。@drescherjm绝对正确,但即使没有它,至少在coliru上,
std::div
似乎被注入全局名称空间并仍然被选中。