为什么结果总是为null(c ++)

时间:2018-05-16 07:56:56

标签: visual-c++

我构建了一个计算器来开始学习c ++,但结果总是为0 ...如果我不给result = 0,它说结果没有初始化......错误在哪里? 此外,如果我设置了默认值,它将始终打印出默认值。我是否必须初始化所有整数?

    int main()

{
    int result = 0;
    int processing;
    int nmb;
    int nmb;
    char wait;

cout << "Operation:" << endl;
cout << "1 for +" << endl;
cout << "2 for -" << endl;
cout << "3 for *" << endl;
cout << "4 for /" << endl;
cin >> processing;

cout << "Type both numbers:" << endl;
cout << "1.nmb:" << endl;
cin >> nmb1;
cout << "2.nmb:" << endl;
cin >> nmb2;
switch (processing)
{
    case '1':
        result = nmb1 + nmb2;
        break;
    case '2':
        result = nmb1 - nmb2;
        break;
    case '3':
        result = nmb1 * nmb2;
        break;
    case '4':
        if (nmb2 == 0)
        {
            cout << "Dont do that!";
            break;
        }
        else
        {
            result = nmb1 / nmb2;
            break;
        }
}

cout << "result = " << result << endl;

cin >> wait;
return 0;

}

3 个答案:

答案 0 :(得分:1)

问题可能是您正在针对char个案('1' - &gt; char)而不是int(1)检查switch语句。

编译器没有抱怨,因为char有一个相应的int值(参见ASCII表),它可以进行隐式转换。

尝试删除'或将处理类型更改为char

编辑: 您还得到“结果未初始化”,因为您的交换机没有默认情况,并且鉴于上述错误,您永远不会到达任何其他情况并分配值。

答案 1 :(得分:0)

processing变量的类型与您的切换案例不匹配。

尝试char processing;

答案 2 :(得分:0)

由于'processing'是一个int变量,你应该使用case 1而不是case'1'。 不应该使用''与1。