C++ 对初始化时使用的未初始化局部变量感到困惑?

C++ 对初始化时使用的未初始化局部变量感到困惑?,c++,visual-studio,visual-c++,C++,Visual Studio,Visual C++,当我确信我已经初始化时,我得到一个未初始化的局部变量错误。错误读取正在使用的未初始化局部变量wk1,它是wk1-wk5 代码如下: #include <iostream> using namespace std; const double tax = 0.14; int main() { int wk1,wk2,wk3,wk4,wk5; wk1,wk2,wk3,wk4,wk5 = 0; int thours = wk1 + wk2 + wk3

当我确信我已经初始化时,我得到一个未初始化的局部变量错误。错误读取正在使用的未初始化局部变量wk1,它是wk1-wk5

代码如下:

#include <iostream>

using namespace std;

const double tax = 0.14;

int main()
{   

    int wk1,wk2,wk3,wk4,wk5;
    wk1,wk2,wk3,wk4,wk5 = 0;

    int thours = wk1 + wk2 + wk3 + wk4 + wk5; <------------ This is the error line.
    thours = 0;

    double payrate;
    payrate = 0;

    double gross = thours * payrate;
    double taxes = tax * gross;
    double net = gross - taxes;
    double clothes = 0.10 * net;
    double supplies = 0.10 * net;
    double remaining = net - clothes - supplies;
    double bonds = 0.25 * remaining;
    double pbonds = 0.50 * bonds;

    bonds = 0;
    gross = 0;
    net = 0;
    clothes = 0;
    supplies = 0;
    remaining = 0;

    cout << "Please enter the payrate for employee." << endl;
    cin >> payrate;
    payrate = 0;

cout << "Please enter employee's total hours for week one:" << endl;
cin >> wk1;
wk1 = 0;

    cout << "Please enter employee's total hours for week two:" << endl;
    cin >> wk2;
    wk2 = 0;

    cout << "Please enter employee's total hours for week three:" << endl;
    cin >> wk3;
    wk3 = 0;

    cout << "Please enter employee's total hours for week four:" << endl;
    cin >> wk4;
    wk4 = 0;

    cout << "Please enter employee's total hours for week five:" << endl;
    cin >> wk5;
    wk5 = 0;

    cout << "Here is income before taxes: " << gross << endl;
    cout << "Here is income after taxes: " << net << endl;
    cout << "Here is clothes and accesories: " << clothes << endl;
    cout << "Here is School supplies: " << supplies << endl;
    cout << "Here is personal bonds: " << bonds << endl;
    cout << "Here is parents bonds: " << pbonds << endl;

    return 0;
}
此行是一个逗号运算符表达式,相当于:

wk5 = 0;
因为像wk1这样的表达式没有副作用。只有变量wk5被赋值,其他变量仍未初始化。你可以做:

wk1 = wk2 = wk3 = wk4 = wk5 = 0;
此行是一个逗号运算符表达式,相当于:

wk5 = 0;
因为像wk1这样的表达式没有副作用。只有变量wk5被赋值,其他变量仍未初始化。你可以做:

wk1 = wk2 = wk3 = wk4 = wk5 = 0;

谢谢你修复了我的问题,但是现在我的所有输出计算都得到了0。您是否看到可以有效地获取值的方法?@user3312523语句,如double gross=thours*payrate;不会永远绑定变量的值。在获得thours和payrates的有效值之后,您需要计算gross的值。@user3312523:每次cin>>调用后,您都会将该变量重置为零。只需删除这些电话。例如:在代码cin>>wk1中;wk1=0;删除最后一行wk1=0;一切都会好起来的。致以最良好的祝愿。好的@Yu Hao,我不明白你在得到这些值后计算它的确切含义。当我去掉cin>>wk1=0时,我所有的计算结果仍然是0;还有其他的。谢谢你解决了我的问题,但是现在我的所有输出计算都得到了0。您是否看到可以有效地获取值的方法?@user3312523语句,如double gross=thours*payrate;不会永远绑定变量的值。在获得thours和payrates的有效值之后,您需要计算gross的值。@user3312523:每次cin>>调用后,您都会将该变量重置为零。只需删除这些电话。例如:在代码cin>>wk1中;wk1=0;删除最后一行wk1=0;一切都会好起来的。致以最良好的祝愿。好的@Yu Hao,我不明白你在得到这些值后计算它的确切含义。当我去掉cin>>wk1=0时,我所有的计算结果仍然是0;还有其他人。