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?