Mam takie pytanko (jestem całkowicie początkujący w C++):
dlaczego np. po podstawieniu pod “ile” 5 i dodaniu 5 zer wyskakuje “dziwny” wynik? (powyżej 0 działa OK) również gdy “w” zmienię typ na int obojętnie jakie liczby wpisze (np. 5+6+4+8) też wynik nie jest taki, jak powinien…
proszę o odpowiedź i wyprowadzenie mnie może z głupiego błędu
kod:
#include
int main ()
{
std::cout << "Witam w systemie dodawania \n";
double ile;
double dod;
double w;
double i;
std::cout << "Ile liczb chcesz dodac? \n";
std::cin >> ile;
for(i=0;ile>i;i=i+1)
{
std::cin >> dod;
w=w+dod;
}
std::cout << "Wynik to: ";
std::cout << w << "\n";
system("pause");
}
Ta wg Ciebie “dziwna” wartość to 9.9*10^(-315) jest bardzo bliska zera.
Zauważ, że zadeklarowałeś zmienną “w” jako double i nie nadałeś jej żadnej wartości. Najwyraźniej z tego powodu c++ traktuje zmienne nie zainicjowane typu double jako taką “dziwną” wartość. Aby to udowodnić możesz bezpośrednio po zadeklarowaniu zmiennej “w” napisać
std::cin >> w;
i zobacz co Ci wywali ;). To samo jest z typem float.
Jaki z tego morał? Ano taki, abyś nie polegał na domyślnych wartościach, tylko sam podczas inicjalizacji zmiennej nadał jej wartość.