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

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