变量在未初始化的情况下使用

时间:2012-09-22 05:39:26

标签: c++ variables initialization

因此变量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;
}

2 个答案:

答案 0 :(得分:1)

通过阅读incomeBeforeTax初始化后,需要计算引用hoursWorked cin的{​​{1}}。在cin >> hoursWorked;之后移动该行,它将起作用:

payRate = 15.0;

cout << "Enter hours worked: ";
cin >> hoursWorked;

incomeBeforeTax = payRate * hoursWorked;

cout << endl;
cout << incomeBeforeTax << endl;
与大多数过程语言一样,C ++按照编写顺序对代码进行评估。也就是说,incomeBeforeTax = payRate * hoursWorked;根据incomeBeforeTaxpayRate的当前值为hoursWorked分配值。必须在执行分配之前定义和初始化这些。这就是cin >> hoursWorked的作用。

在旁注中,double变量最好使用double文字进行初始化,因此请将.0添加到值中。

答案 1 :(得分: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;
}