während der Hausaufgaben in meinem sehr seltsamen C++ Buch, which I've been told before to throw away, hatte ein sehr seltsames Codesegment. Ich weiß, dass Hausaufgaben-Zeug immer ein zusätzliches "Mysterium" hineinwirft, um zu versuchen, Sie zu verwirren, als würden Sie 2 Zeilen nach einer Single-Statement-For-Schleife einrücken. Aber dieses hier bin ich verwirrt, weil es einem wirklichen Zweck zu dienen scheint.sqrt (int_value + 0.0) - Hat es einen Zweck?
im Grunde ist es wie folgt aus:
int counter=10;
...
if(pow(floor(sqrt(counter+0.0)),2) == counter)
...
Ich habe Interesse an diesem Teil vor allem:
sqrt(counter+0.0)
Gibt es einen Zweck zum +0.0
? Ist dies die poormanische Art, eine statische Besetzung zu einem Double zu machen? Vermeidet dies eine Compiler-Warnung bei einem Compiler, den ich nicht verwende? Das gesamte Programm druckte genau das Gleiche und kompilierte ohne Warnungen auf g ++, wann immer ich den +0.0
Teil ausließ. Vielleicht verwende ich nicht einen komischen Compiler?
Edit:
Auch dann, wenn gcc nur Standard brechen und nicht einen Fehler für mehrdeutige Referenz seit sqrt
machen kann 3 verschiedene Arten von Parametern nehmen?
[[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] $
Auch hier ist der relevante Teil meiner Systembibliotheken cmath
ich auf Vorlagen nicht so scharf bin, so bin ich nicht sicher, was es
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);
Die eigentliche Frage ist, warum hast du das Buch noch nicht weggeworfen? :) –
@Justin für einen Abschluss erforderlich oder ich würde definitiv jede Seite brennen. – Earlz