Ожидаемый результат из следующего кода должен быть 505,5, но вместо этого он возвращает 3,97541e + 70. Почему это так и как решить проблему?Почему этот код не возвращает переменную bpEffect со значением 505,5?
#include <iostream>
#include <string>
using namespace std;
class Position {
public:
Position(int s, double p, string n) {
shares = s;
price = p;
name = n;
}
double getBpEffect() {
return bpEffect;
}
private:
string name;
int shares;
double price;
double bpEffect = (shares*price)/2;
};
int main() {
Position xyz = Position(100, 10.11, "xyz");
double buyingPower = xyz.getBpEffect();
cout << buyingPower;
system("pause");
return 0;
}
'(акций * цена)/2' бывает слишком рано, до' 'shares' и price' инициализируются , Вы делаете арифметику на случайном мусоре, поэтому, конечно, вы получаете мусор. Инициализируйте 'bpEffect' после того, как вы присвоили значения' shares' и 'price'. –
Игорь прав. Вы должны помещать '(share * price)/2' в метод, такой как ваш конструктор, а не как инициализирующий оператор в вашем коде. – Nonanon
, как сказал Игорь Тандетник, вы управляете мусором; мусор в мусор; Решение очевидно: 'Position (int s, double p, string n): name {n}, shares {s}, price {p}, bpEffect {(share * price)/2} {}' – max66