Cytat, źródło: http://pl.wikibooks.org/wiki/C++/Zmienne#Rzutowanie
W języku C rzutowanie wyglądało w następujący sposób:
int zmienna_calkowita = (int)zmienna_rzeczywista;W C++ nadal można używać takiego rzutowania, jest ono nazywane
"rzutowaniem w stylu C". Oprócz tego C++ oferuje "rzutowanie w stylu
funkcyjnym":int zmienna_calkowita = int(zmienna_rzeczywista);które działa dokładnie tak samo.
...
int zmienna_całkowita = static_cast<int>(zmienna_rzeczywista);
Teraz mój przykładowy program - obliczanie pierwiastka n-tego stopnia z liczby:
Działająca wersja:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int liczba, stopien;
cin >> liczba >> stopien;
cout << pow (liczba, (float)1/stopien);
cin.get();
cin.get();
return 0;
}
Jednak problem pojawia się gdy zamienię:
cout << pow (liczba, (float)1/stopien);
na:
cout << pow (liczba, float(1/stopien));
lub:
cout << pow (liczba, static_cast<float>(1/stopien));
Nie rozumiem, dlaczego z jednym działa a z drugim nie chce działać - mimo iż teoretycznie wg tamtej strony:
działa dokładnie tak samo.
Pozdrawiam.