C++;基本计算器 我对C++和编程都是新的。我被分配给我的C++类做一个计算器,这是我至今所做的。 #include <iostream>; #include <iomanip>; using namespace std; int main() { double x,y; char op; cout << "Enter Expression:"; cin >> x >> op >> y; if (op = '+') { cout << "Result:" << x + y << endl; } else if (op = '-') { cout << "Result:" << x - y << endl; } else if (op = '*') { cout << "Result:" << x*y << endl; } else if (op = '/') { cout << "Result:" << x / y << endl; } else if (op = '%') { cout << "Result:" << x % y << endl; // <--- line 23 } else { return 0; } } #包括; #包括,; 使用名称空间std; int main(){ 双x,y; char op; cout>x>>op>>y; 如果(op='+') { cout
您将%用于double,它仅用于整数。 如果要对double使用相同的功能,可以使用fmod() 您应该将您的代码修改为如下所示C++;基本计算器 我对C++和编程都是新的。我被分配给我的C++类做一个计算器,这是我至今所做的。 #include <iostream>; #include <iomanip>; using namespace std; int main() { double x,y; char op; cout << "Enter Expression:"; cin >> x >> op >> y; if (op = '+') { cout << "Result:" << x + y << endl; } else if (op = '-') { cout << "Result:" << x - y << endl; } else if (op = '*') { cout << "Result:" << x*y << endl; } else if (op = '/') { cout << "Result:" << x / y << endl; } else if (op = '%') { cout << "Result:" << x % y << endl; // <--- line 23 } else { return 0; } } #包括; #包括,; 使用名称空间std; int main(){ 双x,y; char op; cout>x>>op>>y; 如果(op='+') { cout,c++,C++,您将%用于double,它仅用于整数。 如果要对double使用相同的功能,可以使用fmod() 您应该将您的代码修改为如下所示 #include <iostream>; #include <iomanip>; using namespace std; int main() { double x,y; char op; cout << "Enter Expression:"; cin >> x >>
#include <iostream>;
#include <iomanip>;
using namespace std;
int main() {
double x,y;
char op;
cout << "Enter Expression:";
cin >> x >> op >> y;
if (op == '+')
{
cout << "Result:" << x + y << endl;
}
else if (op == '-') {
cout << "Result:" << x - y << endl;
}
else if (op == '*') {
cout << "Result:" << x*y << endl;
}
else if (op == '/') {
cout << "Result:" << x / y << endl;
}
else if (op == '%') {
cout << "Result:" << fmode(x,y) << endl;
}
else{
return 0;
}
}
#包括;
#包括,;
使用名称空间std;
int main(){
双x,y;
char op;
cout>x>>op>>y;
如果(op=='+')
{
cout余数运算符%
不适用于double
类型的操作数(例如,请参阅):
对于内置运算符%
,lhs和rhs必须都具有整数或整数
非范围枚举类型
您可以编写static\u cast(x)%static\u cast(y)
此外,请注意,=
是赋值运算符;为了进行比较(与if(op='%')
的情况相同),请使用相等运算符=
,即if(op='%'))<代码> %/> >代码>操作仅针对整数值定义。您不能应用双倍运算。也有一个典型的新手错误:在C++ <代码>运算符=/COD>是赋值运算符<代码> A=B<代码/Mead B值,并将其放入A中,但<代码>运算符==/COD>比较运算符,<代码> A==B/code>平均b
返回true
。如果要比较值,请使用=
,而不是=
使用浮点除法,则没有余数。2.5%1.2
的结果应该是什么
对于这种情况,可以使用int
s:
else if (op == '%') {
cout << "Result:" << (int)x % (int)y << endl;
}
else如果(op=='%')){
CUT<代码> = 和=是不同的操作%Galman是整数,而不是双.EEKE.C风格的铸件。至少使用适当的C++铸件…不需要使情况变得比它更危险和更不明朗。@ Jesper Juhl:一般同意;但当铸造原始数据类型<代码>时,情况是否真的危险或不清楚?双< <代码> >代码> int <代码>?也许在这个特定的情况下不是这样,但是因为C风格的转换可能会退化成一个<代码> RealTytCase[/COD]的一个<代码> COSTOSTCAST 变量,我会认为它非常危险并且总是避免的东西——即使在给定的情况下是可证明安全的。另外,C++的C++更容易被<代码> > GRP<代码>所做,并且对转换的过程更为明确;-如果你能帮助的话,请不要在C++程序中使用C风格的转换。(问这个问题的人说他是)倾向于使用向他们抛出的示例代码片段,因为他们还不知道更好的方法。如果这些示例使用任何过时/过时的编码样式(如C-cast、指针指向char而不是std::string
,等等),他们只是复制它,并认为这是正常的做法。这就是为什么我认为人们不应该在小片段中使用这些东西,因为它们是一个坏例子。@Striezel好的,你说服了我,如果你想编辑它,或者我以后再做。。。
else if (op == '%') {
cout << "Result:" << (int)x % (int)y << endl;
}