首页 > 解决方案 > 当“if”条件为假时,变量“hasil”未初始化使用

问题描述

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

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

标签: c++xcodeif-statementsyntaxwarnings

解决方案


如果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;

推荐阅读