mientras hacía alguna tarea en mi muy extraño libro de C++, which I've been told before to throw away, tenía un segmento de código muy peculiar. Sé que los deberes siempre arrojan un "misterio" extra para confundir dos líneas después de un ciclo for-loop de declaración única. Pero estoy confundido porque parece servir para algo real.sqrt (int_value + 0.0) - ¿Tiene un propósito?
Básicamente es así:
int counter=10;
...
if(pow(floor(sqrt(counter+0.0)),2) == counter)
...
Estoy interesado en esta parte en especial:
sqrt(counter+0.0)
¿Hay algún propósito a la +0.0
? ¿Es esta la forma de poormans de hacer un reparto estático a un doble? ¿Esto evita alguna advertencia de compilación en algún compilador que no uso? Todo el programa imprimió exactamente lo mismo y compilado sin advertencias en g ++ cada vez que omití la parte +0.0
. Tal vez no estoy usando un compilador lo suficientemente extraño?
Editar:
Además, ¿gcc simplemente romper estándar y no crea un error de referencia ambigua desde sqrt
puede tomar 3 tipos diferentes de parámetros?
[[email protected]~/projects/homework1] $ cat calc.cpp
#include <cmath>
int main(){
int counter=0;
sqrt(counter);
}
[[email protected]~/projects/homework1] $ g++ calc.cpp
/usr/lib/libstdc++.so.47.0: warning: strcpy() is almost always misused, please use strlcpy()
/usr/lib/libstdc++.so.47.0: warning: strcat() is almost always misused, please use strlcat()
[[email protected]~/projects/homework1] $
Además, aquí es la parte pertinente de mis librerías del sistema cmath
no estoy demasiado interesado en las plantillas, así que no estoy seguro de lo que está haciendo
using ::sqrt;
inline float
sqrt(float __x)
{ return __builtin_sqrtf(__x); }
inline long double
sqrt(long double __x)
{ return __builtin_sqrtl(__x); }
template<typename _Tp>
inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
double>::__type
sqrt(_Tp __x)
{ return __builtin_sqrt(__x);
La verdadera pregunta es, ¿por qué no has tirado el libro? :) –
@Justin se requiere para un título o definitivamente quemaría cada página. – Earlz