获取C ++项目的运行时错误

时间:2016-02-18 16:32:25

标签: c++

我必须为C ++类编写程序,我遇到了一些麻烦。我已经完成了所有变量,我觉得我已经初始化了所有内容,但它仍然无效。

程序参数:计算电费。客户收取每千瓦时0.27千瓦时的费用,然后以每千瓦时0.57美元的额外费率收费。

输入:kwh

输出:总客户账单

代码:

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    //List the variables
    double kwh;
    double baseKwh;
    double extraKwh;
    double baseBill;
    double extraBill;
    double electricBill;

    //User inputs the kwh used
    cout << "Enter kwh used: "; //Prompt
    cin >> kwh;

    //Process the data and compute the bill
    if (kwh <= 500) {
    baseKwh = kwh;
    extraBill = 0;

    }
    else {
    baseKwh = 500;
    extraKwh = kwh - 500;
    }
    baseBill = baseKwh * 0.27;
    extraBill = extraKwh * 0.55;
    electricBill = baseBill + extraBill;

    //Output the bill.
    cout << "Your bill is $" << electricBill << endl;

    system("PAUSE");
    return 0;
}

问题:

  

运行时检查失败#3 - 正在使用变量'extraKwh'   没有被初始化。

Microsoft Visual Studio指向第30行作为问题。当用户输入500以上时,程序工作正常,但是,当用户输入500或更低时,我得到错误信息。

2 个答案:

答案 0 :(得分:2)

extraBill = extraKwh * 0.55;

如果else子句未在此代码之上进行评估,那么extraKwh确实未初始化。所以你试图读取上面未初始化的变量值并触发undefined behaviour。在声明期间为其分配一些默认值,该问题应该消失。

一般来说,最好在声明期间初始化变量。

答案 1 :(得分:1)

您已声明了您的变量,但已将其留下未初始化

无论您的代码中发生什么,您都在使用double extraKwh = 0; 。根据您的逻辑判断,您应该在声明它的同时将其初始化为零:

extraKwh

这样,即使您没有点击else阻止,总会有一个值分配给from django import forms from django.utils.encoding import force_text class ModelMultiRawInput(forms.TextInput): def render(self, name, value, attrs=None): if value: value = ','.join([force_text(v) for v in value]) else: value = '' return super(ModelMultiRawInput, self).render(name, value, attrs) def value_from_datadict(self, data, files, name): value = data.get(name) if value: return value.split(',')