无法初始化变量
问题描述:
下面是我正在编写的用于学习如何在C++中使用文件的代码。我有一切正确的阅读和写作,但我无法让我的显示器显示正确的值,因为它忽略了当我尝试在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;
+1。作为一个经验法则,你应该几乎总是在声明它们的地方初始化局部变量。 –
在声明中初始化变量是一个很好的习惯。好答案。 – JoeFish