gpt4 book ai didi

c++ - 如何让我的 bool 语句中定义的变量在我的主程序中工作?

转载 作者:太空宇宙 更新时间:2023-11-04 15:17:41 25 4
gpt4 key购买 nike

好吧,我真的是编程和 C++ 的新手,我一直在尝试通过使用 bool 语句为用户提供程序的多个路径来扩展类作业。我想知道我如何获得在 bool 语句中定义的值,以便在较低的//处理区域之外使用。

问题:在“interestRate = interestRate/12;”问题,Xcode 告诉我“变量‘interestRate’在此处使用时可能未初始化”

    cout << "To figure out the interest rate on your deposit, please type whether your money is in a 'CD', 'Savings', 'Checking' or 'IRA' account." << endl;
char CD;
char Savings;
char Checking;
char IRA;

if (cin.get (CD))
{
interestRate = 0.01;
}
if (cin.get(Savings))
{
interestRate = 0.01;
}
if (cin.get(Checking))
{
interestRate = 0.08;
}
if (cin.get(IRA))
{
interestRate = 0.08;
}

//Processing
interestRate = interestRate / 12;
time = years * 12;
amountSaved = deposit *((pow(1 + interestRate, time) - 1) / interestRate);
interestRate = (interestRate * 100) * 12;

最佳答案

要直接回答您的问题,您可能将 interestRate 定义为类似于:

double interestRate;

如果没有给定值,double 等内置类型的默认值根本不会被初始化。如果您的 if 条件都不为真,则永远不会设置 interestRate。然后在计算 interestRate/12 时使用它的值。那是未定义的行为,是不好的。编译器真的很有帮助。

为防止这种情况,所有可能的代码路径都需要为 interestRate 提供一个值。例如,如果您希望忽略无效输入并使用默认值,您只需对其进行初始化并构建与现在类似的检查结构。

除此之外,您的代码并没有按照您的想法运行。您似乎想要实际输入一个字符串并根据多个选项检查其值。您现在正在做的是让用户为您拥有的每张支票输入一个字符,然后在读取成功时设置利率(在正常情况下它总是应该为单个字符设置利率)。

您可能需要的是一个字符串和一个 if-else 链:

std::string accountType;
if (!(std::cin >> accountType)) {
//unsuccessful read
}

if (accountType == "CD" || accountType == "Savings") {
interestRate = 0.01;
} else if (accountType == "Checking" || accountType == "IRA") {
interestRate = 0.08;
} else {
//invalid input
}

Thomas Matthews也有一个很好的观点,从用户的角度来看,输入“ira”将执行与输入“IRA”相同的操作,因此将输入字符串转换为一种情况将使您可以仅与小写或大写进行比较字符串。

关于c++ - 如何让我的 bool 语句中定义的变量在我的主程序中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28309369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com