变量正在使用,但未初始化

The variable is being used and not being initialized

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

这是一个基本的C++编程类的程序。 可变食物价格和bisPrice给了我一个错误,即在没有初始化的情况下被使用,并且它们不能通过引用传递。我不确定如何初始化它们。请帮忙。谢谢

using namespace std;
void getBiscuits( string &, double & );
void getDryFood( string & , double & );
void processData( double, double , double & , double & , double & , double , double );
void displayOrder( string , string , string , double , double , double , double , double , double , double , double , double , double );
const double foodCost = 30;
const double bisCost = 10;
const double salesTax = .07;
int main()
{
    //declare variables
    string name;
    double numBis;
    string bis;
    string dryFood;
    double foodNum;
    double bisPrice;
    double foodPrice;
    double tax = 0;
    double total = 0;
    double subTotal = 0;
    //get data from user
    cout << "Welcome to The Big Dog's Food Panty" << endl;
    cout << "Please tell us your first and last name?" << endl;
    getline(cin, name);
    cout << "Thanks " << name << endl;
    system ("cls");
    getBiscuits( bis , numBis ) ;
    getDryFood( dryFood , foodNum ) ;
    processData( numBis , foodNum , subTotal , tax , total , bisPrice , foodPrice ) ;
    displayOrder( name ,  bis , dryFood , bisPrice , numBis , bisCost , foodPrice , foodNum , foodCost , subTotal , tax , salesTax , total ) ;
    // stop to let the user read the far
    system ("pause");
}
void getBiscuits( string &bis , double &numBis )
{
    string dummyVariable;
    cout << "Would you like the Spicy Chicken or BBQ Beef biscuits?" << endl;
    getline(cin, bis);
    system ("cls");
    cout << "How many five lb bags of " << bis << " would you like?" << endl;
    cin >> numBis;
    getline(cin, dummyVariable);
    system ("cls");
}
void getDryFood( string &dryFood , double &foodNum )
{
    cout << "Would you like Salmon and Peas or Chicken and Rice dry food?" << endl;
    getline(cin, dryFood);
    system ("cls");
    cout << "How many 28 lbs bags of " << dryFood << " would you like?" << endl;
    cin >> foodNum;
    system ("cls");
}
void processData( double numBis , double foodNum , double &subTotal ,double &tax , double &total , double bisPrice , double foodPrice )
{
    //calculate
    bisPrice = numBis * bisCost;
    foodPrice = foodNum * foodCost;
    subTotal = bisPrice + foodPrice;
    tax = subTotal * salesTax;
    total = subTotal + tax;
}
void displayOrder( string name ,  string bis , string dryFood , double bisPrice , double numBis , double bisCost , double foodPrice , double foodNum , double foodCost , double subTotal ,double tax , double salesTax , double total )
{
    // display cost
    cout << "Thanks " << name << " for your order!" << endl;
    cout << numBis << setprecision(2) << fixed << " five lbs bags of " << bis << " at $10.00 each is $" << bisPrice << endl;
    cout << setprecision(0) << fixed <<foodNum << setprecision(2) << fixed << " 28 lbs bags of " << dryFood << " at $30.00 each is $" << foodPrice << endl;
    cout << setprecision(2) << fixed << "Your subtotal is $" << subTotal << endl;
    cout << setprecision(2) << fixed << "Your sales tax is $" << tax << endl;
    cout << setprecision(2) << fixed << "Your total is $" << total << endl;
}

您没有定义它们的初始值。

double bisPrice; 
double foodPrice;

更改为:

double bisPrice = 0;
double foodPrice = 0;

若要修复编译器警告,请初始化变量:

double bisPrice = 0; 
double foodPrice = 0;

在 C 和 C++ 中,基本值类型没有初始值。

声明常规局部变量时,默认情况下其值未确定。但是您可能希望变量在声明该变量的同时存储该值。为此,您可以初始化变量。

对象将使用其默认构造函数进行初始化,这就是为什么string变量没有相同的错误的原因。

只需这样做,错误就会消失:

double bisPrice = 0;
double foodPrice = 0;

我认为你应该很明显,你没有在声明:)上提供任何价值

是的,不要忘记这些:

string name = "";
double numBis = 0;
string bis = "";
string dryFood = "";
double foodNum = 0;

函数中的变量具有自动存储功能,因此默认情况下它们不会初始化为值。