return 1; else
return n*silnia(n-1);
>
int mainO {
int n;
std::cout << "Podaj liczbę: std : :cin >> n;
std::cout << n << "! = " << silnia(n) << "\n" ;
}
Efekt kilku wywołań tego programu jest następujący:
Podaj liczbę: 12 121=479001600 Podaj liczbę: 16 16!=2004189184 Podaj liczbę: 17 17!=-288522240
Chociaż zgodnie z definicją matematyczną silnia liczby naturalnej jest większa od zera, w powyższym przykładzie pojawił się wynik ujemny. To właśnie efekt pierścieniowej struktury typu int i wyjścia poza dozwolony zakres przy obliczaniu 17!.
C++
W C—|—|— mamy do dyspozycji kilka typów całkowitych, zarówno ze znakiem, jak i bez (patrz tabela 2.3). Różnią się one między sobą ilością bitów używanych do zapisania liczb, a co za tym idzie, zakresem liczb możliwych do przedstawienia na komputerze oraz szybkością obliczeń wykonywanych na nich. Warto wiedzieć, że na różnych platformach te same typy mogą się różnić między sobą długością. Dlatego minimalne i maksymalne wartości możliwe do przedstawienia w każdym typie danych na konkretnej platformie zapisane są w pliku nagłówkowym climits.
Gdybyśmy potrzebowali liczb całkowitych większych od maksymalnej wartości reprezentowanej w typie long int, możemy skorzystać z jednej z wielu bibliotek, np. C+-f- BIL [29] lub GMP [30], pozwalających na operowanie na liczbach, których wielkość ograniczona jest jedynie pamięcią komputera.
Fortran
W tabeli 2.4 zestawione zostały dostępne w Fortranie typy całkowite. Odpowiadają one typom ze znakiem w C++ z tą różnicą, że Fortran oferuje typ o długości 64 bitów również na platformach 32-bitowych.
Python
W Pythonie mamy do dyspozycji dwa typy całkowite. Typ int odpowiada 32-bitowemu typowi int z C-H- i pozwala na przedstawienie liczb z zakresu
15