未初始化的局部变量错误甚至以为我已将其初始化(C ++)

时间:2018-09-15 17:38:38

标签: c++

我对编程很陌生,不知道自己做错了什么,但是我在line 20上遇到了错误,它表示我尚未初始化intownMileshighwayMiles

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    double intownMPG = 23.5;
    double highwayMPG = 28.9;
    double intownMiles;
    double highwayMiles;
    double gallons = intownMiles / intownMPG + highwayMiles / highwayMPG;

    cout << "Please enter the number of in-town driving miles:  " << endl;
    cin >> intownMiles;
    cout << "Please enter the number of highway driving miles:  " << endl;
    cin >> highwayMiles;
    cout << "The total number of gallons required is: " << gallons  << "gal" << endl;

}

2 个答案:

答案 0 :(得分:2)

您的代码:

double intownMiles;
double highwayMiles;
double gallons = intownMiles / intownMPG + highwayMiles / highwayMPG;

显然已经在使用它们之前对其进行了初始化。您所做的只是对它们进行定义-这样它们就存在了,但是具有不确定值,直到您分配给它们为止(从未做过)。

在定义变量时将变量初始化为合理的初始值,并且编译器警告将消失(并且您的代码将不再具有未定义的行为)。

答案 1 :(得分:1)

编写C ++与编写常规数学方程式不同。

首先,代码按顺序执行

执行到此行:

double gallons = intownMiles / intownMPG + highwayMiles / highwayMPG;

使用表达式中使用的变量的当前值 立即计算gallons的值。

在使用某些变量之前,您尚未为其分配任何值,因此您无法期望得到有意义的结果。

以后更改这些变量时,gallons的值不受影响。
因此,您必须先向用户询问这些变量的值,然后再然后计算公式。