Por que sqrt () funciona bem em uma variável int se não estiver definida para um int?
No capítulo 3 doProgramação: Princípios e Prática usando C ++ (sexta impressão), afirma Stroustrup (p.68):"Observe quesqrt()
não está definido para umint
".
Aqui está um programa C ++ simples baseado nesse capítulo:
#include "std_lib_facilities.h"
int main()
{
int n = 3;
cout << "Square root of n == " << sqrt(n) << "\n";
}
Dada a citação acima, eu esperaria que o processo de compilação ou execução desse programa falhasse de alguma forma.
Para minha surpresa, compilá-lo (com g ++ (GCC) 4.2.1) e executá-lo com sucesso sem erros ou avisos, e produziu a seguinte saída perfeitamente decente:
Square root of n == 1.73205
Minha pergunta, portanto, é: sesqrt()
realmente não está definido para umint
Então, por que o programa acima não falha de alguma forma?