Почему sqrt () отлично работает с переменной int, если она не определена для int?

В главе 3Программирование: принципы и практика с использованием C ++ (Шестая печать), Страуструп утверждает (стр.68):"Обратите внимание, чтоsqrt() не определено дляint".

Вот простая программа на C ++, основанная на этой главе:

#include "std_lib_facilities.h"

int main()
{
    int n = 3;
    cout << "Square root of n == " << sqrt(n) << "\n";
}

Учитывая приведенную выше цитату, я ожидаю, что процесс компиляции или запуска этой программы каким-то образом завершится неудачно.

К моему удивлению, его компиляция (с g ++ (GCC) 4.2.1) и его запуск прошли успешно без ошибок и предупреждений и дали следующий вполне приличный результат:

Square root of n == 1.73205

Поэтому мой вопрос: еслиsqrt() на самом деле не определено дляint, тогда почему вышеприведенная программа как-то не работает?

Ответы на вопрос(6)

Ваш ответ на вопрос