mam pewien problem z wynikiem mnożenia dużych liczb. Załóżmy, że mam dwie liczby całkowite dodatnie. Jedna to 123456789, a druga to 99999. Kiedy mnożę je przez siebie i zapisuję do zmiennej (przykładowo) wynik typu unsigned long long , a potem wyświetlam tą zmienną, to okazuje się, że wynik nie jest poprawny (poprawny wynik sprawdzam windowsowym kalkulatorem). W zależności co mnożę i do jakiego typu zmiennej zapisuję, wychodzą różne wyniki. Niekiedy ujemne! Czy ktoś wie dlaczego tak się dzieje? Używam Dev’aC++, ale nie sądzę, żeby to miało jakiś wpływ.
Wynik mnożenia zmieści się w unsigned long long(z tym, że kompilator może go domyślnie traktować jako _int_a, co w rezultacie da zły wynik), ale nie zmieści się w liczbach mniejszych. Jest to spowodowane tym, że nie da się go zapisać na 32 bitach(a co dopiero w liczbach mniejszych). Poczytaj sobie o tym, jak komputer przechowuje liczby, np. w tym artykule(a w szczególności rozdział Systemy liczbowe), a rozjaśni Ci się, o czym mówię.