What is Type Conversion and Type Casting: वास्तव में Type Conversion व Type Casting दो अलग Concepts नहीं हैं बल्कि एक ही Concept के दो अलग नाम हैं। Computer में विभिन्न Data Types के मानों को Store करके Process किया जाता है। विभिन्न प्रकार के मानों के साथ प्रक्रिया करते समय कई बार ऐसी स्थितियां पैदा हो जाती हैं, जिसमें किसी एक Data Type के मान को किसी दूसरे Data Type के मान में Convert करके किसी Calculation को Perform करना होता है। इस प्रकार की स्थितियों से निपटने के लिए C Language हमें दो तरह से Type Conversion Mechanism Provide करता है, जिसके आधार पर हम एक प्रकार के मान को दूसरे Type के मान में Convent करके अपनी Requirement को पूरा करते हैं। ये दोनों तरीके निम्नानुसार हैं:
Automatic Type Conversion
”सी” भाषा में विभिन्न प्रकार के Variables व Constant की Mixing कर सकते हैं, लेकिन Execution के समय ये Expressions एक विशेष नियम का पालन करते हैं। हम जानते हैं कि Expressions में Compiler दो या दो से अधिक Operands के साथ क्रिया करके एक Operand में उसके मान को Store करता है। यदि Operand अलग-अलग Data Type के हों तो Lower Type का Operand Upper Type के Operand में बदल जाता है और Result हमेंशा Higher Type का प्राप्त होता है। इस सम्बंध में ”सी” कुछ नियमों का पालन करता है जो निम्नानुसार हैः
- सभी short व char प्रकार के Variables Automatically int प्रकार में Convert हो जाते हैं।
- यदि एक Operand Long Double प्रकार का हो तो Execution के दौरान दूसरा Operand भी Long Double प्रकार के Operand में Convert हो जाता है और Result Long Double प्रकार का प्राप्त होता है।
- यदि एक Operand Double प्रकार का हो तो दूसरा भी Double में Convert हो जाता है और Result Double प्रकार का प्राप्त होता है।
- यदि एक Operand Float प्रकार का हो तो दूसरा भी Float प्रकार में बदल कर Output Float प्रकार का प्राप्त होता है।
- यदि एक Operand unsigned long int है तो दूसरा भी unsigned long int में Convert हो जाएगा और Result unsigned long int में ही प्राप्त होता है।
- long int में बदल कर long int का Result प्राप्त किया जा सकता है या फिर दोनों Operand unsigned long int में बदल जाएंगे व Result unsigned long int में प्राप्त होगा।
- यदि एक Operand unsigned long int है तो दूसरा भी unsigned में बदल कर Result unsigned int में प्राप्त होगा।
Assignment Operator के Left Side में जिस प्रकार के Data Type का Variable होता है, Expression उसी प्रकार का Data Return करेगा। उदाहरण से समझें तो माना तीन वेरियेबल्स् क्रमश: int, long व Double प्रकार के हैं:
int a;
long b;
double c;
अब यदि a = b * c; Expression Use करें तो b का मान long से double Type के Data में Convert हो जाएगा व प्राप्त मान a में Store हो जाएगा। लेकिन a int प्रकार का है इसलिये a में केवल पूर्णांक मान ही Store होगा ना कि double प्रकार का क्योंकि int प्रकार का Identifier केवल पूर्णांक ही Store कर सकता है। इसलिये किसी भी Expression का Final Result Expression के Left Side के Identifier के Data Type पर निर्भर रहता है।
Manual Type Conversion OR Casting
जब हमें विशेष प्रकार की गणनाएं करनी होती है, तब हम Automatic Type Conversion का प्रयोग नहीं कर सकते हैं। ऐसे में हमें विशेष प्रकार से Type Conversion करना पडता है। इस प्रकार से किसी Expression में किसी Identifier के Declare किये गए Data Type को बदल कर नए Data Type में Convert करके गणना करते हैं। इस प्रकार के Conversion को Casting करना कहते हैं। किसी Variable के Data Type को किसी दूसरे Data Type में Convert करके Calculation Perform करने के लिए हमें उस Variable से पहले उस Data Type को Specify करना होता है, जिसमें Variable के मान को Convert करना है। उदाहरण के लिए निम्न Program देखिएः
#include <stdio.h> #include <conio.h> main() { int a = 15, b = 2; float c; c = a/b; printf(“C is %f “,c); getch(); }
इस Program को जब Run किया जाता है, तब हमें Output में 7.000000 मान प्राप्त होता है, जबकि हमें 7.500000 मान प्राप्त होना चाहिए। ऐसा इसलिए होता है, क्योंकि Variable a व b दोनों ही Integer प्रकार के हैं। हालांकि Variable c एक Float प्रकार का Variable है, लेकिन फिर भी ये Variable वही मान Store कर सकता है, जो मान a/b Expression से Generate होता है और a व b दोनों ही Integer होने की वजह से दसमलव वाला मान 7.5 Generate नहीं कर सकते हैं, इसलिए Variable c में Store होने वाला Resultant मान 7 ही होता है, जो एक Float प्रकार के Variable में Store होने की वजह से 7.000000 में Convert हो जाता है।
Variable c में 7.5 तभी Store हो सकता है, जब a या b में से कोई Float प्रकार का हो। इस प्रकार की स्थिति में हमें इस Expression के लिए a या b में से किसी एक Variable के मान को Float में Convert करना जरूरी होता है। किसी Variable के मान को किसी एक Expression के लिए एक Type से दूसरे Type में Convert करने के लिए हमें उस Variable की Manual Casting करनी पडती है और किसी Variable की Casting करने के लिए हमें उस Variable से पहले Braces के बीच में उस Data Type को Specify करना होता है, जिस Data Type में हम उस Variable के मान को Change करना चाहते हैं। पिछले Program के आधार पर इस प्रक्रिया को हम निम्नानुसार समझ सकते हैं:
c = (float)a / b;
पिछले Program में जब हम इस Statement को पहले लिखे गए Statement से Replace करते हैं, तो Output में हमें Variable c का मान 7.5000000 प्राप्त होता है। ऐसा इसलिए होता है, क्योंकि इस Statement के Execute होने से पहले Variable a जो कि Integer प्रकार का है, Float प्रकार के मान में Convert हो जाता है। चूंकि कभी भी दो अलग प्रकार के Variables के बीच किसी प्रकार की Calculation Perform नहीं होती है, इसलिए जब Integer प्रकार के Variable a को Float प्रकार में Convert कर दिया जाता है, तब Integer प्रकार का दूसरा Variable b की भी Automatic Type Casting होती है और वह भी Float प्रकार के मान में Convert हो जाता है।
अब a व b दोनों Float प्रकार के मान के आधार पर Calculation Perform करते हैं, जिससे Float प्रकार का मान 7.5 Generate होता है। Assignment Operator इस मान 7.5 को Variable c में Store कर देता है और जब हम Variable c के मान को Screen पर Display करते हैं, तब हमें Variable c का मान 7.5000000 प्राप्त होता है। यदि हम चाहें तो उपरोक्त Statement को निम्नानुसार भी लिख सकते हैं:
c = a / (float) b;
Statement को इस तरह से लिखने पर भी Program के Output पर कोई फर्क नहीं पडता है और हमें वही Output प्राप्त होता है, जो पिछले Statement का प्राप्त होता है। Modified Program को हम निम्नानुसार लिख सकते हैं:
#include <stdio.h> #include <conio.h> main() { int a = 15, b = 2; float c; c = (float) a / b; printf(“C is %f “,c); getch(); }
वर्तमान समय में हालांकि विभिन्न प्रकार की जरूरतों को पूरा करने के लिए सैकडों प्रकार की Programming Languages को विकसित किया जा चुका है। फिर भी हर Programming Language में Type Casting का हमेंशा से अपना एक विशेष स्थान रहा है, जो कि अपना विशेष Role Play करता रहा है। इसलिए Type Casting को ठीक से समझना किसी भी Programming Language पर अच्छी पकड बनाने के लिए बहुत जरूरी है और आपकी इस जरूरत को पूरा करने में C Programming Language in Hindi पुस्तक आपकी काफी मदद कर सकती है क्योंकि इस पुस्तक में विभिन्न प्रकार के Real Life Practical Examples का प्रयोग करते हुए बहुत ही सरल भाषा में विभिन्न प्रकार के Programming Concepts को समझाया गया है। (What is Type Conversion and Type Casting)
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook C Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
C Programming Language in Hindi | Page: 477 + 265 | Format: PDF