C++计算器显示,最后额外显示 0
C++ calculator displays and extra 0 in the end
我做的计算器遇到了这个问题。看,当我输入计算时,它总是在末尾添加一个 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"。要解决此问题,您应该将a
、b
、result
和op
局部化main
(全局变量是错误的(,将a
、b
和op
传递给计算函数,并将返回的计算结果存储在result
中。它将看起来像这样:
float result = Input(a, b, op);
cout << result << endl;
在调用方中调用cout << result << endl;
。 并且result
始终为 0。这是因为它从未显式设置为任何内容,并且C++编译器友好地将其初始化为零,因为它在全局范围内。
在这种情况下,逐行调试器是您最好的朋友。事实上,你已经混合了你的1(输入,2(计算和3(输出阶段,这无济于事:理想情况下,它们都应该是程序的独立部分。
删除 cout <<结果<<endl;
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 字符串-C++后显示的随机字符
- 继承期间显示未知行为的子类
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- 程序崩溃并显示"std::out_of_range"错误
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- 从数据库实时显示QT c++中的数据
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 显示错误输出的简单数组排序程序
- Qt自定义QPush按钮未显示在布局上
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 显示基于用户输入的整数的字符
- 使用QTreeView,如何通过调用函数只突出显示特定的行/列
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- C ,兴趣计算器未显示正确的输出
- C++计算器显示,最后额外显示 0
- 为什么我的输出显示显示计算器中的每个选项
- 切换菜单计算器将不显示算术