未初始化的变量读取错误

时间:2012-02-15 06:53:06

标签: c++ class variables

编程以查找数字的位数之和。

编译后的代码会出错:

runtime failure:variable 'z' is being used without being initialized.

如果我初始化'z'将不会删除z的原始值?

在这里输入代码

#include<iostream>

#include<cmath>
#include<string>
#include<iomanip>
using namespace std;
class sumd
{
int x;
  public:
void getdata()
{
    int z=0;
    cout<<"enter the no";
cin>>x;
z=x;
};
void sumdigit()
{
int z,y,sume,temp;             // this is the line with the error...
for(temp=z;temp>0;temp/=10)
{
    y=temp%10;
sume+=y;
}
cout<<sume;

};
};
  int main()
  {
  sumd s1;
   s1.getdata();
   s1.sumdigit();
   return 0;
      }

2 个答案:

答案 0 :(得分:4)

我认为问题在于这个方法:

void sumdigit()
{
    int z,y,sume,temp;             // this is the line with the error...
    for(temp=z;temp>0;temp/=10)
    {
        y=temp%10;
        sume+=y;
    }
    cout<<sume;
}

您尚未为zy提供值;它们是未初始化的局部变量。我认为您可能打算将封闭类的zy数据成员。尝试在这个方法之外移动这些变量的定义,看看是否能解决问题。

希望这有帮助!

答案 1 :(得分:0)

此时z没有“原始”值。 我假设您正在考虑将保存getdata函数中z的值? 好吧,它不会。您必须从函数返回z的值并将其传递给sumdigit函数