संभव डुप्लिकेट का उपयोग किए बिना अहस्ताक्षरित पूर्णांक में बदल जाती है: डबल/नाव अहस्ताक्षरित पूर्णांक से
g++ -Wall not warning about double-> int castजी ++ चेतावनी दी है जब डबल/नाव -Wconversion
सवाल here के अनुसार, प्रत्यक्ष रूपांतरण पोर्टेबल नहीं है। मैंने पाया कि मेरे कोड में मेरे कुछ मामले थे जहां ऐसा होता है और अगर मैं ऐसा करता हूं तो मुझे चेतावनी देने के लिए g ++ बताना चाहूंगा, लेकिन मुझे ऐसा कोई विकल्प नहीं मिल रहा है। क्या किसी को पता है कि ऐसा करने का कोई विकल्प है?
नोट: मैं देखता हूं - रूपांतरण, लेकिन यह उन सभी प्रकार के अन्य रूपांतरणों के बारे में भी चेतावनी देता है जिनकी मुझे परवाह नहीं है (जैसे int को बिना हस्ताक्षर किए गए int को परिवर्तित करना, जो मानक के अनुसार पोर्टेबल है)।
संपादित करें: यहाँ एक कोड उदाहरण है जिसके लिए मैं एक चेतावनी देखना चाहेंगे है:
double dblNumber = -234;
unsigned long uintNumber = dblNumber;
जी ++ का एक संस्करण पर, यह मुझे 0xFFFFFF16 (जो 2 के पूरक में -234 है) के एक पूर्णांक मूल्य देता है । दूसरे पर यह मुझे 0. देता है। स्पष्ट रूप से कोड संदिग्ध है, यही कारण है कि इसे समझ में नहीं आता है पोर्टेबल माना जाता है।
@ डीजेक्लिन: * "नोट: मैं देखता हूं - रूपांतरण, लेकिन यह उन सभी प्रकार के अन्य रूपांतरणों के बारे में भी चेतावनी देता है जिनकी मुझे परवाह नहीं है (जैसे int को बिना हस्ताक्षर किए गए int को परिवर्तित करना, जो मानक के अनुसार पोर्टेबल है)।" *। – Zeta
मैं मानता हूं कि मुझे वह अन्य प्रश्न नहीं दिखाई देता है, लेकिन यह वास्तव में -वोनवर्जन का उपयोग न करने का पता नहीं लगाता है। यह अजीब लगता है कि मैं डिफ़ॉल्ट रूप से इसके बारे में चेतावनी नहीं देता, खासकर जब से g ++ के विभिन्न संस्करण अलग-अलग कार्यान्वयन को चुपचाप विफल करने के कारण अलग-अलग प्रतिक्रिया देते हैं। – KyleL
@KdawgUD क्या आप कोड का एक उदाहरण टुकड़ा दिखा सकते हैं? सुनिश्चित नहीं है कि आप वास्तव में रूपांतरण कैसे करते हैं।जब भी आप स्पष्ट रूप से एक प्रकार से दूसरे में डाले जाते हैं, उदाहरण के लिए 'un_signed_int_value = (unsigned int) double_value;' आप कंपाइलर को बता रहे हैं * मुझे पता है कि मैं क्या कर रहा हूं *। तो मुझे नहीं लगता कि क्यों संकलक इस तरह के रूपांतरणों के बारे में चेतावनी देगा। वास्तव में, अगर कोई था तो स्पष्ट कास्ट किसी भी चेतावनी को दबा देगा। जब तक मैं आपके प्रश्न को गलत नहीं समझता, आप जो भी पूछ रहे हैं वह संभव नहीं है। –