मेरी बहुत अजीब सी ++ पुस्तक, which I've been told before to throw away में कुछ होमवर्क करते समय, एक बहुत ही असामान्य कोड सेगमेंट था। मुझे पता है कि गृहकार्य सामग्री हमेशा "रहस्य" में फेंकती है ताकि आपको एक-कथन के लिए लूप के बाद 2 लाइनों को इंडेंट करने की कोशिश की जा सके। लेकिन यह मैं उलझन में हूं क्योंकि ऐसा लगता है कि यह कुछ वास्तविक उद्देश्य प्रदान करता है।वर्ग (int_value + 0.0) - क्या इसका कोई उद्देश्य है?
मूल रूप से यह इस तरह है:
int counter=10;
...
if(pow(floor(sqrt(counter+0.0)),2) == counter)
...
मैं इस हिस्से विशेष रूप से में दिलचस्पी रखता हूँ:
sqrt(counter+0.0)
वहाँ +0.0
करने के लिए कुछ उद्देश्य है? क्या यह गरीबों को एक स्थिर कलाकार का दोगुना करने का तरीका है? क्या यह कुछ कंपाइलर पर कुछ कंपाइलर चेतावनी से बचता है जिसका मैं उपयोग नहीं करता? जब भी मैंने +0.0
भाग छोड़ा, तो पूरे कार्यक्रम ने एक ही चीज़ को मुद्रित किया और g ++ पर चेतावनियों के बिना संकलित किया। शायद मैं एक अजीब पर्याप्त संकलक का उपयोग नहीं कर रहा हूँ?
संपादित करें:
इसके अलावा, जीसीसी सिर्फ मानक तोड़ने करता है और sqrt
के बाद से अस्पष्ट संदर्भ मानकों के 3 विभिन्न प्रकार ले जा सकते हैं के लिए एक त्रुटि नहीं है?
[[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] $
इसके अलावा, यहां अपने सिस्टम पुस्तकालयों cmath
की प्रासंगिकता का मैं टेम्पलेट्स पर भी उत्सुक नहीं हूँ, इसलिए मुझे यकीन है कि यह क्या कर रही है
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);
वास्तविक सवाल यह है कि आपने अभी तक पुस्तक को क्यों नहीं फेंक दिया है? :) –
@ जस्टिन एक डिग्री के लिए आवश्यक है या मैं निश्चित रूप से हर पृष्ठ जला देगा। – Earlz