C ++计算器最后显示和额外的0

时间:2017-11-14 14:33:03

标签: c++ calculator

我的计算器出现了这个问题。请参阅,当我输入计算时,它总是在末尾添加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;

    }
}

3 个答案:

答案 0 :(得分:4)

result是一个全局静态变量,它变为零 - 初始化并且永远不会更改。所以cout << result << endl;将始终打印“0”。要解决此问题,您应该abresultop本地main(全局变量不好),传递abop计算函数并将返回的计算结果存储在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;