Dlaczego sqrt () działa poprawnie na zmiennej int, jeśli nie jest zdefiniowany dla int?
W rozdziale 3Programowanie: zasady i praktyka przy użyciu C ++ (szósty druk), stwierdza Stroustrup (str. 68):„Zauważ, żesqrt()
nie jest zdefiniowany dlaint
".
Oto prosty program C ++ oparty na tym rozdziale:
#include "std_lib_facilities.h"
int main()
{
int n = 3;
cout << "Square root of n == " << sqrt(n) << "\n";
}
Biorąc pod uwagę powyższy cytat, oczekiwałbym, że proces kompilowania lub uruchamiania tego programu zakończy się niepowodzeniem.
Ku mojemu zdziwieniu skompilowanie go (za pomocą g ++ (GCC) 4.2.1) i uruchomienie go zakończyło się sukcesem bez błędów i ostrzeżeń, i wygenerowało następujące doskonale przyzwoite wyjście:
Square root of n == 1.73205
Moje pytanie zatem brzmi: jeślisqrt()
tak naprawdę nie jest zdefiniowany dlaint
, dlaczego więc powyższy program jakoś się nie powiedzie?