我的简单计算器中的一个变量表示它没有被初始化。为什么?

时间:2016-10-09 17:48:53

标签: c++

我是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;
    }
}

3 个答案:

答案 0 :(得分:1)

如果用户输入“a”作为运算符(除了有效选项之外的其他内容),则永远不会为sum分配值,但会打印sum

答案 1 :(得分:0)

编译器说您正在尝试使用非正数变量sum

如果您认为初始化它,请再想一想:如果r+-*/,您只需指定一个值。但是如果ra怎么办? 'End'不是字符,因此无效

然后sum永远不会初始化/有值,因此编译器会抱怨。

答案 2 :(得分:0)

正如其他人所说,如果用户输入sum的无效选项,变量r仍然未初始化。只需设置double sum=0;,就可以了。

此外,'End'不是字符,因此您无法将其与r进行比较。您将不得不使用其他一些选项来结束。