Я знаю, что мог бы написать калькулятор более эффективным способом, но я на последнем шаге, поэтому я хочу закончить это.
Предупреждения появляются после usleep ()
В моей консоли я получаю 0 в качестве ответа и получаю 4 предупреждения о том, что x +, -, *, / == ans ничего не делает.
Это, вероятно, глупая ошибка, но, пожалуйста, халяп. Я новичок в C ++ и программировании в целом.
#include <iostream>
#include <sstream>
#include <unistd.h>
using namespace std;
int main()
{
//X is first number, Y is second
int ans = 0;
string i;
int x;
int y;
string op;
cout << "This is a four function integer calculator." << endl << endl << "Type 'help' at any time to view the help screen" << endl<< endl<<"Insert your first number" << endl;
cin >> i;
if(i=="help"){
cout << "Help Menu" << endl << endl << "add = +" << endl <<"subtract = -" << endl <<"multiply = *" << endl <<"divide = /"<< endl;
cin >> i;
}else{
stringstream(i) >> x;
cout << "Insert your operator" << endl;
cin >> op;
cout << "Insert your second number" << endl;
cin >> y;
cout << "The calculator will now preform " << x << " " << op << " " << y << endl;
usleep(1000000);
if(op== "+"){
x + y == ans;
return ans;
}else if(op=="-"){
x - y == ans;
return ans;
}else if(op=="*"){
x * y == ans;
return ans;
}else if(op=="/"){
x / y == ans;
return ans;
}else{
cout << "You inserted an illegal operator, please restart the application" << endl;
}
cout << endl << ans << endl;
}
}
==
является оператором сравнения. Так с
x + y == ans;
Вы проверяете, если x + y
равняется ans
а затем откажитесь от результата сравнения. Это ничего не делает, таким образом, предупреждение.
Если вы хотите назначить x + y
в ans
использовать
ans = x + y;
Обратите внимание, что ans
должен быть на левой стороне.