我是C ++的菜鸟,作为家庭作业的一部分,我不得不在C ++中创建一个包含四个函数的简单计算器。我已经完成了这个并且它有效,但是,我现在正在尝试循环它以便用户可以无限尝试使用它,但是,我正在努力。基本上,当我运行我的程序并告诉程序我想要使用哪个操作时,它会告诉我我的变量" sum"没有被初始化。我不太确定这是什么,或者如何解决它。有任何想法吗?这是我的代码 -
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
while (true)
{
int num1, num2, r;
double sum;
cout << "Enter a number\n";
cin >> num1;
cout << "Enter another number\n";
cin >> num2;
cout << "Please enter an operator (+ , * , /, - or End)\n";
cin >> r;
if (r == 'End') break;
if (r == '+') sum = num1 + num2;
if (r == '-') sum = num1 - num2;
if (r == '*') sum = num1 * num2;
if (r == '/') sum = num1 / num2;
cout << r;
cout << "The answer is \n" << sum << endl;
system("pause");
return 0;
}
}
答案 0 :(得分:1)
如果用户输入“a”作为运算符(除了有效选项之外的其他内容),则永远不会为sum
分配值,但会打印sum
。
答案 1 :(得分:0)
编译器说您正在尝试使用非正数变量sum
。
如果您认为初始化它,请再想一想:如果r
为+
,-
,*
或/
,您只需指定一个值。但是如果r
是a
怎么办? 'End'
不是字符,因此无效
然后sum
永远不会初始化/有值,因此编译器会抱怨。
答案 2 :(得分:0)
正如其他人所说,如果用户输入sum
的无效选项,变量r
仍然未初始化。只需设置double sum=0;
,就可以了。
此外,'End'
不是字符,因此您无法将其与r进行比较。您将不得不使用其他一些选项来结束。