Warum funktioniert sqrt () für eine int-Variable, wenn sie nicht für ein int definiert ist?

In Kapitel 3 vonProgrammieren: Grundlagen und Übung mit C ++ (sechster Druck), Stroustrup sagt aus (S.68):"Beachten Sie, dasssqrt() ist nicht definiert für einint".

Hier ist ein einfaches C ++ - Programm, das auf diesem Kapitel basiert:

#include "std_lib_facilities.h"

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

Angesichts des obigen Zitats würde ich erwarten, dass der Prozess des Kompilierens oder Ausführens dieses Programms auf irgendeine Weise fehlschlägt.

Zu meiner Überraschung war das Kompilieren (mit g ++ (GCC) 4.2.1) und das Ausführen ohne Fehler oder Warnungen erfolgreich und lieferte die folgende einwandfreie Ausgabe:

Square root of n == 1.73205

Meine Frage lautet daher: wennsqrt() ist wirklich nicht definiert für eineint, warum scheitert dann das obige Programm nicht irgendwie?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage