编程以查找数字的位数之和。
编译后的代码会出错:
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;
}
答案 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;
}
您尚未为z
或y
提供值;它们是未初始化的局部变量。我认为您可能打算将封闭类的z
和y
数据成员。尝试在这个方法之外移动这些变量的定义,看看是否能解决问题。
希望这有帮助!
答案 1 :(得分:0)
此时z没有“原始”值。 我假设您正在考虑将保存getdata函数中z的值? 好吧,它不会。您必须从函数返回z的值并将其传递给sumdigit函数