Robiąc zadanie z potęgami wpadłem na coś dziwnego. Mianowicie pewien błąd, który dotyczy właśnie potęgowania (piszę to tu, bo chcę sprawdzić, czy to kwestia tego, ze moja wersja programu jest wadliwa, czy może jednak każdy tak ma). Otóż taki kod jak poniżej poda wynik prawidłowy i jeżeli wpiszemy a=5, a potem b=2, to dostaniemy wynik 25.
#include <iostream>
#include <cmath>
using namespace std;
int a,b;
int main()
{
cin >> a >> b;
cout << pow(a,b)<< endl;
return 0;
}
Natomiast jeśli spróbujemy najpierw zapisać ten wynik do jakiejś zmiennej, a potem go wyświetlić, to w niektórych przypadkach zostanie on obniżony o jeden (czyli dla a=5 i b=2, dostaniemy wynik 24):
#include <iostream>
#include <cmath>
using namespace std;
int a,b,c;
int main()
{
cin >> a >> b;
c=pow(a,b);
cout << c << endl;
return 0;
}
W zasadzie zauważyłem, że dzieje się to tylko w przypadku gdy próbujemy podnieść do obojętnie jakiej potęgi, podstawę 5, lub wielokrotność 5 (wynik będzie obniżany, gdy spróbujemy podnieść do jakiejś potęgi 5, 10, 15... itd.). Nie mam zielonego pojęcia czemu tak się dzieje, ale wydało mi się to dość dziwne. Napiszcie czy wy też tak macie. :D