未初始化的变量正在使用
Variable being used without being initialized
因此变量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
初始化后,需要计算引用hoursWorked
的incomeBeforeTax
。在cin >> hoursWorked;
后移动该行,它将起作用:
payRate = 15.0;
cout << "Enter hours worked: ";
cin >> hoursWorked;
incomeBeforeTax = payRate * hoursWorked;
cout << endl;
cout << incomeBeforeTax << endl;
C++,像大多数过程语言一样,按照编写代码的顺序计算代码。也就是说,incomeBeforeTax = payRate * hoursWorked;
根据payRate
和hoursWorked
的当前值为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;
}
相关文章:
- 为什么C++有不同的变量初始化方式?
- 静态 constexpr 成员变量初始化
- C++不同的变量初始化
- 全局和局部变量初始化与 constexpr 的差异背后的基本原理
- 是变量初始化失败吗?
- 视觉C++:在 DLL 加载期间,全局变量初始化顺序是否具有确定性?
- 类静态变量初始化顺序
- 使用 constinit 变量初始化 constexpr 变量
- 是否可以在不修改父类的情况下将成员变量初始化推迟到继承的类?
- 使用全局变量初始化不同编译单元中的其他全局变量
- 使用默认构造函数引用成员变量初始化错误
- 宏的 if 语句中的变量初始化
- 不稳定的C :每行适应性变化多变量初始化
- 同一函数中的静态函数变量初始化顺序
- C 语言中的静态变量初始化
- 错误:调用'begin(long double [nPoints])'没有匹配函数;使用硬编码的 int 与整数变量初始化向量
- 类POD成员变量初始化
- 尝试捕获类变量初始化的范围
- 共享库中 __attribute__((构造函数)) 的全局/静态变量初始化问题
- 多变量初始化编译器支持