C में टाइप कास्टिंग: टाइप रूपांतरण, निहित, स्पष्ट उदाहरण के साथ

सी में टाइपकास्टिंग क्या है?

टाइपकास्टिंग एक डेटा टाइप को दूसरे में बदलना है। इसे C भाषा में डेटा रूपांतरण या टाइप रूपांतरण भी कहा जाता है। यह 'C' प्रोग्रामिंग में पेश की गई महत्वपूर्ण अवधारणाओं में से एक है।

'सी' प्रोग्रामिंग दो प्रकार के टाइप कास्टिंग ऑपरेशन प्रदान करती है:

  1. अंतर्निहित प्रकार कास्टिंग
  2. स्पष्ट प्रकार कास्टिंग

अंतर्निहित प्रकार कास्टिंग

इंप्लिसिट टाइप कास्टिंग का मतलब है डेटा टाइप को उसके मूल अर्थ को खोए बिना परिवर्तित करना। जब आप डेटा टाइप बदलना चाहते हैं तो इस प्रकार की टाइपकास्टिंग ज़रूरी है बिना अंदर संग्रहीत मूल्यों के महत्व को बदलना परिवर्तनशील.

C में इंप्लिसिट टाइप कन्वर्जन अपने आप हो जाता है जब किसी मान को उसके संगत डेटा टाइप में कॉपी किया जाता है। कन्वर्जन के दौरान, टाइप कन्वर्जन के लिए सख्त नियम लागू होते हैं। अगर ऑपरेंड दो अलग-अलग डेटा टाइप के हैं, तो कम डेटा टाइप वाला ऑपरेंड अपने आप ही उच्च डेटा टाइप में बदल जाता है। इस प्रकार के टाइप कन्वर्जन को निम्न उदाहरण में देखा जा सकता है।

#include<stdio.h>
int main(){
	short a=10; //initializing variable of short data type
	int b; //declaring int variable
	b=a; //implicit type casting
	printf("%d\n",a);
	printf("%d\n",b);
}

आउटपुट:

10
10

अंतर्निहित प्रकार कास्टिंग

  1. दिए गए उदाहरण में, हमने शॉर्ट डेटा टाइप का एक वेरिएबल घोषित किया है जिसका मान 10 है।
  2. दूसरी पंक्ति पर, हमने int डेटा प्रकार का एक चर घोषित किया है।
  3. तीसरी लाइन पर, हमने वेरिएबल s का मान वेरिएबल a को असाइन किया है। तीसरी लाइन पर इंप्लिसिट टाइप कन्वर्जन किया जाता है क्योंकि वेरिएबल s का मान जो शॉर्ट डेटा टाइप का है, वेरिएबल a में कॉपी किया जाता है जो int डेटा टाइप का है।

वर्ण को पूर्णांक में परिवर्तित करना

ASCII में डिकोड किए गए वर्ण को पूर्णांक के साथ जोड़ने के उदाहरण पर विचार करें:

#include <stdio.h>
main() {
   int  number = 1;
   char character = 'k'; /*ASCII value is 107 */
   int sum;
   sum = number + character;
   printf("Value of sum : %d\n", sum );
}

आउटपुट:

 Value of sum : 108

यहां, संकलक ने वास्तविक जोड़ ऑपरेशन करने से पहले 'k' के मान को ASCII में परिवर्तित करके पूर्णांक संवर्धन किया है।

अंकगणितीय रूपांतरण पदानुक्रम

कंपाइलर सबसे पहले किसी वर्ण को पूर्णांक में परिवर्तित करता है। यदि ऑपरेंड में अभी भी अलग-अलग डेटा प्रकार हैं, तो उन्हें निम्न पदानुक्रम चार्ट में दिखाई देने वाले उच्चतम डेटा प्रकार में परिवर्तित किया जाता है:

अंतर्निहित प्रकार कास्टिंग
अंकगणितीय रूपांतरण पदानुक्रम

इस अवधारणा को समझने के लिए निम्नलिखित उदाहरण पर विचार करें:

#include <stdio.h>
main() {
   int  num = 13;
   char c = 'k'; /* ASCII value is 107 */
   float sum;
   sum = num + c;
   printf("sum = %f\n", sum );}

आउटपुट:

 sum = 120.000000

सबसे पहले, c चर पूर्णांक में परिवर्तित हो जाता है, लेकिन संकलक परिवर्तित करता है संख्या और c "फ्लोट" में जोड़ता है और उन्हें 'फ्लोट' परिणाम उत्पन्न करने के लिए जोड़ता है।

अंतर्निहित रूपांतरण के बारे में महत्वपूर्ण बिंदु

  • टाइप रूपांतरण के निहित प्रकार को मानक प्रकार रूपांतरण भी कहा जाता है। निहित प्रकार कास्टिंग में हमें किसी कीवर्ड या विशेष कथन की आवश्यकता नहीं होती है।
  • छोटे डेटा प्रकार को बड़े डेटा प्रकार में परिवर्तित करने को भी कहा जाता है प्रकार पदोन्नतिउपरोक्त उदाहरण में, हम यह भी कह सकते हैं कि s का मान पूर्णांक प्रकार में पदोन्नत किया गया है।
  • अंतर्निहित प्रकार रूपांतरण हमेशा संगत डेटा प्रकारों के साथ होता है।

हम उन डेटा प्रकारों पर अंतर्निहित प्रकार कास्टिंग नहीं कर सकते जो एक दूसरे के साथ संगत नहीं हैं जैसे:

  1. फ्लोट को int में परिवर्तित करने से भिन्न वाला भाग छोटा हो जाएगा, जिससे मान का अर्थ ही समाप्त हो जाएगा।
  2. डबल को फ्लोट में बदलने से अंक ऊपर हो जाएंगे।
  3. लॉन्ग इंट को इंट में बदलने से ड्रॉप हो जाएगाping अतिरिक्त उच्च क्रम बिट्स का।

उपरोक्त सभी मामलों में, जब हम डेटा प्रकारों को परिवर्तित करते हैं, तो मान अपना अर्थ खो देगा। आम तौर पर, मान के अर्थ के नुकसान के बारे में कंपाइलर द्वारा चेतावनी दी जाती है।

'सी' प्रोग्रामिंग टाइपकास्टिंग का एक और तरीका प्रदान करता है जो स्पष्ट टाइप कास्टिंग है।

स्पष्ट प्रकार कास्टिंग

अंतर्निहित प्रकार रूपांतरण में, डेटा प्रकार स्वचालित रूप से परिवर्तित हो जाता है। कुछ परिदृश्य हैं जिनमें हमें प्रकार रूपांतरण को बाध्य करना पड़ सकता है। मान लीजिए कि हमारे पास एक चर div है जो दो ऑपरेंड के विभाजन को संग्रहीत करता है जिन्हें int डेटा प्रकार के रूप में घोषित किया गया है।

 int result, var1=10, var2=3;
result=var1/var2;

इस मामले में, चर var1 और var2 पर किए गए विभाजन के बाद चर “परिणाम” में संग्रहीत परिणाम पूर्णांक प्रारूप में होगा। जब भी ऐसा होता है, चर “परिणाम” में संग्रहीत मान अपना अर्थ खो देता है क्योंकि यह भिन्न भाग पर विचार नहीं करता है जो सामान्य रूप से दो संख्याओं के विभाजन में प्राप्त होता है।

ऐसी स्थितियों में प्रकार परिवर्तन को बाध्य करने के लिए, हम स्पष्ट प्रकार कास्टिंग का उपयोग करते हैं।

इसके लिए टाइप कास्टिंग ऑपरेटर की आवश्यकता होती है। टाइप कास्टिंग ऑपरेशन के लिए सामान्य सिंटैक्स इस प्रकार है:

(type-name) expression

यहाँ,

  • प्रकार का नाम मानक 'सी' भाषा डेटा प्रकार है।
  • एक अभिव्यक्ति स्थिर, परिवर्तनशील या वास्तविक अभिव्यक्ति हो सकती है।

आइए हम एक प्रोग्राम लिखें जिसमें स्पष्ट टाइप-कास्टिंग के साथ C में टाइपकास्ट करने का तरीका दिखाया जाए।

#include<stdio.h>
int main()
{
	float a = 1.2;
	//int b  = a; //Compiler will throw an error for this
	int b = (int)a + 1;
	printf("Value of a is %f\n", a);
	printf("Value of b is %d\n",b);
	return 0;
}

आउटपुट:

Value of a is 1.200000
Value of b is 2

स्पष्ट प्रकार कास्टिंग

  1. हमने float प्रकार का एक चर 'a' आरंभीकृत किया है।
  2. इसके बाद, हमारे पास पूर्णांक डेटा प्रकार का एक और चर 'b' है। चूँकि चर 'a' और 'b' अलग-अलग डेटा प्रकार के हैं, इसलिए 'C' ऐसी अभिव्यक्ति के उपयोग की अनुमति नहीं देगा और यह एक त्रुटि उत्पन्न करेगा। 'C' के कुछ संस्करणों में, अभिव्यक्ति का मूल्यांकन किया जाएगा लेकिन परिणाम वांछित नहीं होगा।
  3. ऐसी स्थितियों से बचने के लिए, हमने फ्लोट प्रकार के वेरिएबल 'a' को टाइपकास्ट किया है। स्पष्ट प्रकार कास्टिंग विधियों का उपयोग करके, हमने फ्लोट को डेटा प्रकार पूर्णांक में सफलतापूर्वक परिवर्तित कर दिया है।
  4. हमने 'a' का मान मुद्रित कर दिया है जो अभी भी फ्लोट है
  5. टाइपकास्टिंग के बाद, परिणाम हमेशा एक पूर्णांक 'b' होगा।

इस तरह, हम सी प्रोग्रामिंग में स्पष्ट प्रकार कास्टिंग को लागू कर सकते हैं।

सारांश

  • टाइपकास्टिंग को टाइप कन्वर्जन भी कहा जाता है
  • इसका अर्थ है एक डेटा प्रकार को दूसरे में परिवर्तित करना।
  • छोटे डेटा प्रकार को बड़े डेटा प्रकार में परिवर्तित करने को टाइप प्रमोशन भी कहा जाता है।
  • सी में दो प्रकार के प्रकार रूपांतरण हैं: अंतर्निहित और स्पष्ट प्रकार रूपांतरण।
  • संगत डेटा प्रकार मिलने पर अंतर्निहित प्रकार रूपांतरण स्वचालित रूप से संचालित होता है।
  • स्पष्ट प्रकार रूपांतरण के लिए प्रकार कास्टिंग ऑपरेटर की आवश्यकता होती है।

डेटा हानि से बचने के लिए विभिन्न डेटा प्रकारों के साथ काम करते समय प्रोग्रामिंग अभ्यास के लिए निम्नलिखित नियमों को ध्यान में रखें:

  • पूर्णांक प्रकारों को फ़्लोट में परिवर्तित किया जाना चाहिए.
  • फ्लोट प्रकार को डबल में परिवर्तित किया जाना चाहिए।
  • वर्ण प्रकारों को पूर्णांक में परिवर्तित किया जाना चाहिए.

इस पोस्ट को संक्षेप में इस प्रकार लिखें: