c++ - 当“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
它上面的也是一样。我复制了老师的代码,但它仍然无法正常工作且无法运行。如果您能帮助我,我将不胜感激!
解决方案
如果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;
推荐阅读
- directx-11 - 如何在directx 11中更新对象的颜色
- ios - 为什么当正交滚动行为设置为分页时,scrollToItem 不会更改 contentOffset 属性?
- java - Scala hello-world 模板给出:java.lang.NoClassDefFoundError:
- reactjs - 为什么formik在我打到第二个字段时立即失去焦点?
- java - Eclipse IDE 中的 Java Maven 项目,HTTP 请求在 IDE 中作为 java 应用程序运行时工作,但在 jarfile 时被 cloudflare 阻止
- flutter - 如何像这样在 Visual Studio Code 中更改代码的突出显示颜色
- postgresql - 尝试创建存储过程以将数据插入 postresql 数据库 - 如何自动输入主键?
- raspberry-pi4 - 如何在启动时禁用显示 Raspberry Pi 第一个屏幕
- python - 如何从 Flask 中的请求中加载 json 文件?
- python - 将新变量添加到 IRIS 立方体并存储到 NetCDF