我的计算器出现了这个问题。请参阅,当我输入计算时,它总是在末尾添加0。我不知道如何解决这个问题吗?
以下是代码:
#include <iostream>
using namespace std;
void Input(float &x, float &y);
float a = 1.0, b = 1.0, result;
char op;
int main() {
cout << "Welcome to Foxy's calculator" << endl;
cout << "----------------------------" << endl;
cout << "Please input a calculation operation (eg. 1+1): ";
cin >> a >> op >> b;
Input(a, b);
cout << result << endl;
system("pause");
return 0;
}
void Input (float &x, float &y) {
a = x;
b = y;
switch (op)
{
case '+':
cout << x + y;
break;
case '-':
cout << x - y;
break;
case '*':
cout << x*y;
break;
case '/':
cout << x / y;
break;
default:
cout << "Error! Operator is not correct" << endl;
cout << "Please input your calculation with a proper operator: ";
cin >> a >> op >> b;
}
}
答案 0 :(得分:4)
result
是一个全局静态变量,它变为零 - 初始化并且永远不会更改。所以cout << result << endl;
将始终打印“0”。要解决此问题,您应该a
,b
,result
和op
本地main
(全局变量不好),传递a
, b
和op
计算函数并将返回的计算结果存储在result
中。它看起来像这样:
float result = Input(a, b, op);
cout << result << endl;
答案 1 :(得分:3)
您在来电者中拨打cout << result << endl;
。并且result
始终为0.这是因为它永远不会显式设置为任何内容,并且C ++编译器会将其初始化为零,因为它在全局范围内。
在这种情况下,您的逐行调试器是您最好的朋友。你搞砸了你的1)输入,2)计算和3)输出阶段的事实没有帮助:理想情况下,它们都应该是你程序的独立部分。
答案 2 :(得分:1)
删除cout&lt;&lt;结果&lt;&lt; ENDL;