सी में कास्टिंग अन्य भाषाओं के विपरीत अद्वितीय है। यह कभी भी बुद्धिमान नहीं होता है।
सी में कास्टिंग ध्यान से परिभाषित नियमों का उपयोग करके मूल्यों को एक प्रकार से दूसरे प्रकार में परिवर्तित करता है। यदि आपको वास्तव में जानने की आवश्यकता है, तो मानक पढ़ें। अन्यथा मुख्य बिंदु हैं:
- यदि संभव हो तो पूर्णांक प्रकारों के बीच रूपांतरण मूल्य को संरक्षित करता है। यदि गंतव्य में अधिक बिट्स हैं तो यह चौड़ा और आम तौर पर सुरक्षित है, लेकिन इसमें साइन एक्सटेंशन शामिल हो सकता है। यदि संकरा, बिट्स खो जाएगा।
- पॉइंटर प्रकारों के बीच रूपांतरण पॉइंटर मान को संरक्षित करता है, लेकिन परिणाम अक्सर अपरिभाषित होते हैं, अक्सर गैर-पोर्टेबल और अक्सर उन्नत परिदृश्यों के लिए उपयोगी होते हैं।
- पूर्णांक प्रकारों और बिंदुओं के बीच रूपांतरण ठीक है यदि पूर्णांक बड़ा है, और बिट पैटर्न (जो भी मतलब हो सकता है) को संरक्षित करता है। यदि पूर्णांक बहुत छोटा है, तो परिणाम अपरिभाषित है लेकिन उपयोगी नहीं है। एक नियम के रूप में 'लंबा' 'शून्य *' के लिए पर्याप्त विस्तृत है, लेकिन कोई गारंटी नहीं है! इस तरह से बनाए गए पॉइंटर्स सभी प्रकार के दिलचस्प तरीकों से अमान्य हो सकते हैं।
- फ्लोट और पूर्णांक प्रकारों के बीच रूपांतरण एक उपयुक्त लाइब्रेरी रूटीन (ट्रंकेशन के साथ, गोल नहीं) द्वारा परिभाषित अंकगणितीय रूपांतरण हैं।
- आप शून्य करने के लिए फ़ंक्शन का रिटर्न मान डाल सकते हैं। मेरे पास कभी नहीं है। यह कुछ नहीं करता है।
कुछ कास्ट को स्पष्ट रूप से लागू किया जाता है, और उनमें से कुछ में कंपाइलर एक चेतावनी जारी करेगा। चेतावनी देने के लिए सबसे अच्छा!
कास्ट के लिए डिक्शनरी की परिभाषा को अनदेखा किया गया है, क्योंकि वह अनहेल्दी है। कई जातियों को शब्दों के रूपांतरण या ज़बरदस्ती के द्वारा बेहतर ढंग से वर्णित किया जाता है, इसलिए यह भी जानने योग्य है।
C ++ MUCH अधिक जटिल है, लेकिन आपने यह नहीं पूछा, क्या आपने?