【问题标题】:Variable 'hasil' is used uninitialized whenever 'if' condition is false当“if”条件为假时,变量“hasil”未初始化使用
【发布时间】:2021-06-03 20:13:59
【问题描述】:

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

#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 也是如此。 我复制了老师的代码,但它仍然无法正常工作且无法运行。如果您能帮助我,我将不胜感激!

【问题讨论】:

  • 变量未在最后一个 else 块中初始化。如果这是你老师的代码,那你最好找别的老师。

标签: c++ xcode if-statement syntax warnings


【解决方案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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 2012-03-01
    • 2021-01-14
    • 2018-04-28
    • 2017-09-21
    • 1970-01-01
    相关资源
    最近更新 更多