¿Por qué sqrt () funciona bien en una variable int si no está definida para un int?
En el capitulo 3 deProgramación: Principios y Práctica utilizando C ++. (sexta impresión), estados de Stroustrup (p.68):"Tenga en cuenta quesqrt()
no está definido para unint
".
Aquí hay un programa simple de C ++ basado en ese capítulo:
#include "std_lib_facilities.h"
int main()
{
int n = 3;
cout << "Square root of n == " << sqrt(n) << "\n";
}
Dada la cita anterior, esperaría que el proceso de compilación o ejecución de este programa falle de alguna manera.
Para mi sorpresa, compilarlo (con g ++ (GCC) 4.2.1) y ejecutarlo tuvo éxito sin errores ni advertencias, y produjo el siguiente resultado perfectamente decente:
Square root of n == 1.73205
Por lo tanto, mi pregunta es: sisqrt()
Realmente no está definido para unaint
, entonces ¿por qué el programa anterior no falla de alguna manera?