未初始化的变量正在使用

Variable being used without being initialized

本文关键字:变量 初始化      更新时间:2023-10-16

因此变量hoursWorked未初始化。但是,如果我希望它等于用户存储在其中的任何内容,我应该如何初始化它?例如,我希望hoursWorked成为任何人在cin中输出的任何内容。这是我的代码:

#include <iostream>
using namespace std;
int main () 
{
   //Declare Variables
   double hoursWorked;
   double payRate;
   double incomeBeforeTax;
   payRate = 15;
   incomeBeforeTax = payRate * hoursWorked;
   cout << "Enter hours worked: ";
   cin >> hoursWorked;
   cout << endl;
   cout << incomeBeforeTax << endl; 
   return 0;
}

通过读取cin初始化后,需要计算引用hoursWorkedincomeBeforeTax。在cin >> hoursWorked;后移动该行,它将起作用:

payRate = 15.0;
cout << "Enter hours worked: ";
cin >> hoursWorked;
incomeBeforeTax = payRate * hoursWorked;
cout << endl;
cout << incomeBeforeTax << endl;

C++,像大多数过程语言一样,按照编写代码的顺序计算代码。也就是说,incomeBeforeTax = payRate * hoursWorked;根据payRatehoursWorked的当前值为incomeBeforeTax分配一个值。在执行分配之前,必须定义和初始化这些。这就是cin >> hoursWorked所做的。

附带说明一下,double变量最好使用double文字进行初始化,因此请向值添加.0

通过使用

incomeBeforeTax = payRate * hoursWorked;

在初始化hoursWorked之前,您似乎表明了incomeBeforeTax需要的意图。保留该意图的一种方法是创建一个函数并在需要时使用该函数incomeBeforeTax

例:

#include <iostream>
using namespace std;
int main () 
{
   //Declare Variables
   double hoursWorked;
   double payRate;
   // Define a function that encodes the intent of what
   // incomeBeforeTax needs to be.
   auto incomeBeforeTax = [&]() { return payRate*hoursWorked; };
   payRate = 15;
   cout << "Enter hours worked: ";
   cin >> hoursWorked;
   cout << endl;
   cout << incomeBeforeTax() << endl; 
   return 0;
}