提问人:Stefani 提问时间:3/5/2021 最后编辑:msolerStefani 更新时间:3/5/2021 访问量:441
每当 'if' 条件为 false 时,变量 'hasil' 在未初始化的情况下使用
Variable 'hasil' is used uninitialized whenever 'if' condition is false
问:
我是一个初学者,我正在为我的作业制作这个简单的计算器:
#include<iostream>
using namespace std;
int main()
{
float a,b,hasil;
char aritmatika;
cout <<"Selamat datang di Program Calculator Sederhana \n \n";
//Memasukkan input dari user
cout <<"Silahkan masukkan nilai pertamamu: ";
cin >>a;
cout <<"Pilih operator+,-,*,/: ";
cin >>aritmatika;
cout <<"Silahkan masukkan nilai keduamu: ";
cin >>b;
cout <<"\n \nHasil Perhitungan:\n\n";
cout <<a <<aritmatika <<b;
if(aritmatika =='+'){
hasil = a+b;
}else if(aritmatika =='-'){
hasil = a-b;
}else if(aritmatika =='*'){
hasil = a*b;
}else if(aritmatika =='/'){
hasil = a/b;
}else{
cout <<"Operator yang anda masukkan salah"<<endl;
}
cout << "= " << hasil << endl;
cin.get();
return 0;
}
但是有这个警告说.
else if(aritmatika =='/'){
hasil = a/b;
我不明白为什么它显示它是未初始化的,当我擦除那行时,它上面也有同样的事情。
我复制了我老师的代码,但它仍然无法正常工作且无法运行。如果你能帮助我,我将不胜感激!hasil
else if
答:
0赞
Nimo
3/5/2021
#1
如果 aritmatika 不等于您正在测试的 4 个选项中的任何一个,因为用户输入了错误的选项,该怎么办?然后 hasil 永远不会初始化为值。因此,作为已定义但未初始化的变量,分配给保存 hasil 的内存位没有分配给它的值。在最后的 cout 中,您正在尝试使用 hasil,即使它可能没有分配给它的值。因此,编译器试图警告您,您的变量可能会未初始化。因此,您可以执行以下操作:
bool validOperator = true;
if (aritmatika == '+') {
hasil = a + b;
}
else if (aritmatika == '-') {
hasil = a - b;
}
else if (aritmatika == '*') {
hasil = a * b;
}
else if (aritmatika == '/') {
hasil = a / b;
}
else {
validOperator = false;
cout << "Operator yang anda masukkan salah" << endl;
}
if (validOperator)
cout << "= " << hasil << endl;
评论
else