在初始化变量时遇到麻烦

Trouble initializing a variable

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

下面是我编写的代码,用于学习如何在c++中使用文件。我有所有的读写正确,但我不能让我的显示显示正确的值,因为它忽略了当我试图初始化Total变量在while循环。

#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
int main()
{
    int customerNumber;
    double beginningBalance, purchase, payments, financeCharge, endingBalance;
    double beginningTotal, purchaseTotal, paymentsTotal, financeChargeTotal, endingTotal;
    ifstream inputFile;
    ofstream outputFile;
    inputFile.open("BeginningBalance.dat");
    outputFile.open("EndingBalance.dat");
    cout<<"Cust No | Beginning Bal | Finance Charge | Purchases | Payments | Ending Balance"<<endl;
    while (inputFile >> customerNumber)
    {
        outputFile <<customerNumber<<endl;
        inputFile >> beginningBalance;
        inputFile >> purchase;
        inputFile >> payments;
        financeCharge = beginningBalance * .01;
        endingBlanance= beginningBalance + purchase + financeCharge - payments;
        //***********************************************
        //This is where I am having trouble initializing variables.
        //***********************************************
        beginningTotal += beginningBalance; //beginningTotal not being intitialized.
        financeChargeTotal += financeCharge;
        purchaseTotal += purchase;
        paymentsTotal += payments;
        endingTotal += endingBalance;
        outputFile <<fixed<<setprecision(2)<<endingBalance<<endl;
        cout<<setw(5)<<customerNumber<<fixed<<setprecision(2)<<"        "<<beginningBalance<<"        "<<financeCharge<<"          "<<purchase<<"       "<<payments<<"       "<<endingBalance<<endl;
    }
    cout<<"Total:    "<<fixed<<setprecesion(2)<<beginningTotal<<"   "<<financeChargeTotal;
    system ("PAUSE");
    return 0;
}

首先没有初始化变量,因此它们没有任何初始值。然后在这些变量中添加一些内容,结果是未定义的(读垃圾)。

考虑这样声明它们:

double beginningTotal = 0, purchaseTotal = 0, paymentsTotal = 0, financeChargeTotal = 0, endingTotal = 0;

…或者更好——为它们创建一些结构

beginningTotal += beginningBalance

的意思与

相同
beginningTotal = beginningTotal + beginningBalance

beginningTotal在循环之前没有初始化,所以第一次循环得到

beginningTotal = _indeterminant_value_ + beginningBalance

所以beginningTotal总是一个不确定的值。通过不使用未初始化的变量来修复它。

double beginningTotal = 0.0;