टाइप कास्टिंग एक चर को एक डेटा प्रकार से दूसरे डेटा प्रकार में बदलने का एक तरीका है। उदाहरण के लिए, यदि आप एक 'लॉन्ग' वैल्यू को एक साधारण पूर्णांक में स्टोर करना चाहते हैं तो आप 'लॉन्ग' से 'इंट' टाइप कर सकते हैं। आप कास्ट ऑपरेटर . का उपयोग करके स्पष्ट रूप से मानों को एक प्रकार से दूसरे प्रकार में परिवर्तित कर सकते हैं इस प्रकार -
(type_name) expression
निम्नलिखित उदाहरण पर विचार करें जहां कास्ट ऑपरेटर एक पूर्णांक चर के विभाजन को दूसरे द्वारा फ्लोटिंग-पॉइंट ऑपरेशन के रूप में निष्पादित करने का कारण बनता है -
उदाहरण
#include <stdio.h> main() { int sum = 17, count = 5; double mean; mean = (double) sum / count; printf("Value of mean : %f\n", mean ); }
जब उपरोक्त कोड को संकलित और निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -
Value of mean : 3.400000
यहां यह ध्यान दिया जाना चाहिए कि विभाजन पर कास्ट ऑपरेटर की प्राथमिकता होती है, इसलिए योग के मूल्य को पहले टाइप डबल में परिवर्तित किया जाता है और अंत में इसे डबल की गणना करके विभाजित किया जाता है। मूल्य।
प्रकार रूपांतरण निहित हो सकते हैं जो संकलक द्वारा स्वचालित रूप से किया जाता है, या इसे कास्ट ऑपरेटर के उपयोग के माध्यम से स्पष्ट रूप से निर्दिष्ट किया जा सकता है। जब भी प्रकार के रूपांतरण आवश्यक हों तो कास्ट ऑपरेटर का उपयोग करना अच्छा प्रोग्रामिंग अभ्यास माना जाता है।
पूर्णांक प्रचार
पूर्णांक प्रचार वह प्रक्रिया है जिसके द्वारा पूर्णांक प्रकार के मान "छोटा" int या unsigned int से या तो int में परिवर्तित हो जाते हैं या अहस्ताक्षरित int . एक पूर्णांक के साथ एक वर्ण जोड़ने के उदाहरण पर विचार करें -
उदाहरण
#include <stdio.h> main() { int i = 17; char c = 'c'; /* ascii value is 99 */ int sum; sum = i + c; printf("Value of sum : %d\n", sum ); }
जब उपरोक्त कोड को संकलित और निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -
Value of sum : 116
यहां, योग का मान 116 है क्योंकि संकलक पूर्णांक प्रचार कर रहा है और वास्तविक जोड़ ऑपरेशन करने से पहले 'c' के मान को ASCII में परिवर्तित कर रहा है।
सामान्य अंकगणितीय रूपांतरण
सामान्य अंकगणितीय रूपांतरण उनके मूल्यों को एक सामान्य प्रकार में डालने के लिए निहित रूप से प्रदर्शन किया जाता है। कंपाइलर पहले पूर्णांक प्रचार करता है; यदि ऑपरेंड के अभी भी अलग-अलग प्रकार हैं, तो वे उस प्रकार में परिवर्तित हो जाते हैं जो निम्न पदानुक्रम में उच्चतम दिखाई देता है -
सामान्य अंकगणितीय रूपांतरण असाइनमेंट ऑपरेटरों के लिए नहीं किए जाते हैं, न ही तार्किक ऑपरेटरों &&और || के लिए। आइए अवधारणा को समझने के लिए निम्नलिखित उदाहरण लेते हैं -
उदाहरण
#include <stdio.h> main() { int i = 17; char c = 'c'; /* ascii value is 99 */ float sum; sum = i + c; printf("Value of sum : %f\n", sum ); }
आउटपुट
Value of sum : 116.000000
यहां, यह समझना आसान है कि पहला c पूर्णांक में परिवर्तित हो जाता है, लेकिन जैसा कि अंतिम मान दोगुना है, सामान्य अंकगणितीय रूपांतरण लागू होता है और संकलक i और c को 'float' में परिवर्तित करता है और उन्हें एक 'float' परिणाम देता है।पी>