我构建了一个计算器来开始学习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;
}
答案 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。