为什么要将垃圾值分配给变量 'calc'?
Why it is assigning a garbage value to variable 'calc'?
这个程序给变量一个垃圾值calc
。
谁能帮帮我?这里有什么问题?
代码:
#include <iostream>
using namespace std;
class trial {
public:
int m1;
int m2;
int calc = m1 + m2;
void setdata(int a1, int a2) {
m1 = a1;
m2 = a2;
}
void getcalc(){
cout << "Sum of m1 & m2 is " << calc << endl;
}
};
int main() {
trial t1;
t1.setdata(3, 8);
t1.getcalc();
system("pause>0");
return 0;
}
输出:
Sum of m1 & m2 is -1717986920
问题是你如何定义 calc
。
当一个对象trial
被初始化时,m1+m2
被分配给calc
,但是m1
和m2
本身并没有被初始化(它们包含'garbage').
当 setdata()
被调用时,两个用户提供的整数被分配给 m1
和 m2
,但是 calc
没有改变,因此 'garbage'在输出中。
您需要通过在 setdata()
中添加 calc = m1 + m2;
来更新 calc
。
你永远不会首先计算总和...
void setdata(int a1, int a2) {
m1 = a1;
m2 = a2;
calc = m1 + m2;
}
但总是初始化成员变量,你没有初始化 m1 和 m2,因此编译器分配的垃圾值。
这个程序给变量一个垃圾值calc
。
谁能帮帮我?这里有什么问题?
代码:
#include <iostream>
using namespace std;
class trial {
public:
int m1;
int m2;
int calc = m1 + m2;
void setdata(int a1, int a2) {
m1 = a1;
m2 = a2;
}
void getcalc(){
cout << "Sum of m1 & m2 is " << calc << endl;
}
};
int main() {
trial t1;
t1.setdata(3, 8);
t1.getcalc();
system("pause>0");
return 0;
}
输出:
Sum of m1 & m2 is -1717986920
问题是你如何定义 calc
。
当一个对象trial
被初始化时,m1+m2
被分配给calc
,但是m1
和m2
本身并没有被初始化(它们包含'garbage').
当 setdata()
被调用时,两个用户提供的整数被分配给 m1
和 m2
,但是 calc
没有改变,因此 'garbage'在输出中。
您需要通过在 setdata()
中添加 calc = m1 + m2;
来更新 calc
。
你永远不会首先计算总和...
void setdata(int a1, int a2) {
m1 = a1;
m2 = a2;
calc = m1 + m2;
}
但总是初始化成员变量,你没有初始化 m1 和 m2,因此编译器分配的垃圾值。