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?

questionAnswers(6)

yourAnswerToTheQuestion