每当 'if' 条件为 false 时,变量 'hasil' 在未初始化的情况下使用

Variable 'hasil' is used uninitialized whenever 'if' condition is false

提问人:Stefani 提问时间:3/5/2021 最后编辑:msolerStefani 更新时间:3/5/2021 访问量:441

问:

我是一个初学者,我正在为我的作业制作这个简单的计算器:

#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;

我不明白为什么它显示它是未初始化的,当我擦除那行时,它上面也有同样的事情。 我复制了我老师的代码,但它仍然无法正常工作且无法运行。如果你能帮助我,我将不胜感激!hasilelse if

C++ Xcode IF-语句 语法 警告

评论

3赞 Evg 3/5/2021
该变量未在最后一个块中初始化。如果这是你老师的代码,那么你最好找另一位老师。else

答:

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;