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

C++ calculator displays and extra 0 in the end

本文关键字:显示 计算器 C++ 最后      更新时间:2023-10-16

我做的计算器遇到了这个问题。看,当我输入计算时,它总是在末尾添加一个 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;
    }
}

result 是一个全局静态变量,初始化为零,永远不会更改。所以cout << result << endl;将始终打印"0"。要解决此问题,您应该将abresultop局部化main(全局变量是错误的(,将abop传递给计算函数,并将返回的计算结果存储在result中。它将看起来像这样:

float result = Input(a, b, op);
cout << result << endl;

在调用方中调用cout << result << endl;。 并且result始终为 0。这是因为它从未显式设置为任何内容,并且C++编译器友好地将其初始化为零,因为它在全局范围内。

在这种情况下,逐行调试器是您最好的朋友。事实上,你已经混合了你的1(输入,2(计算和3(输出阶段,这无济于事:理想情况下,它们都应该是程序的独立部分。

删除 cout <<结果<<endl;