ऑब्जेक्टिव-सी टाइप कास्टिंग

टाइप कास्टिंग एक चर को एक डेटा प्रकार से दूसरे डेटा प्रकार में बदलने का एक तरीका है। उदाहरण के लिए, यदि आप एक लंबे मूल्य को एक साधारण पूर्णांक में संग्रहित करना चाहते हैं तो आप इंट से लंबे कास्ट टाइप कर सकते हैं। आप स्पष्ट रूप से उपयोग करके मूल्यों को एक प्रकार से दूसरे प्रकार में परिवर्तित कर सकते हैंcast operator निम्नानुसार है -

(type_name) expression

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

#import <Foundation/Foundation.h>

int main() {
   int sum = 17, count = 5;
   CGFloat mean;

   mean = (CGFloat) sum / count;
   NSLog(@"Value of mean : %f\n", mean );

   return 0;
}

जब उपरोक्त कोड संकलित और निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -

2013-09-11 01:35:40.047 demo[20634] Value of mean : 3.400000

यहां यह ध्यान दिया जाना चाहिए कि कास्ट ऑपरेटर के विभाजन पर पूर्वता है, इसलिए मूल्य sum को पहले टाइप किया जाता है double और अंत में यह एक दोहरे मूल्य की गणना द्वारा विभाजित हो जाता है।

टाइप रूपांतरण को निहित किया जा सकता है जो संकलक द्वारा स्वचालित रूप से किया जाता है या इसे के उपयोग के माध्यम से स्पष्ट रूप से निर्दिष्ट किया जा सकता है cast operator। जब भी प्रकार के रूपांतरण आवश्यक होते हैं, कास्ट ऑपरेटर का उपयोग करना अच्छा प्रोग्रामिंग अभ्यास माना जाता है।

पूर्णांक पदोन्नति

पूर्णांक संवर्धन वह प्रक्रिया है जिसके द्वारा पूर्णांक प्रकार के मान "छोटे" से अधिक होते हैं int या unsigned int या तो में परिवर्तित कर रहे हैं int या unsigned int। एक इंट में एक चरित्र को जोड़ने के एक उदाहरण पर विचार करें -

#import <Foundation/Foundation.h>

int main() {
   int  i = 17;
   char c = 'c';  /* ascii value is 99 */
   int sum;

   sum = i + c;
   NSLog(@"Value of sum : %d\n", sum );

   return 0;
}

जब उपरोक्त कोड संकलित और निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -

2013-09-11 01:38:28.492 demo[980] Value of sum : 116

यहां, योग का मान 116 के रूप में आ रहा है क्योंकि संकलक पूर्णांक पदोन्नति कर रहा है और वास्तविक अतिरिक्त संचालन करने से पहले एससीआई के मान को 'सी' में परिवर्तित कर रहा है।

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

usual arithmetic conversionsअपने मूल्यों को एक सामान्य प्रकार में डालने के लिए अंतर्निहित रूप से प्रदर्शन किया जाता है। कंपाइलर पहले पूर्णांक पदोन्नति करता है , यदि ऑपरेंड में अभी भी विभिन्न प्रकार हैं तो वे उस प्रकार में परिवर्तित हो जाते हैं जो निम्न पदानुक्रम में सबसे अधिक दिखाई देता है - -

सामान्य अंकगणितीय रूपांतरण असाइनमेंट ऑपरेटरों के लिए नहीं किए जाते हैं, न ही तार्किक ऑपरेटरों और& और || आइये अवधारणा को समझने के लिए निम्नलिखित उदाहरण लेते हैं -

#import <Foundation/Foundation.h>

int main() {
   int  i = 17;
   char c = 'c';  /* ascii value is 99 */
   CGFloat sum;

   sum = i + c;
   NSLog(@"Value of sum : %f\n", sum );
   return 0;
}

जब उपरोक्त कोड संकलित और निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -

2013-09-11 01:41:39.192 demo[15351] Value of sum : 116.000000

यहां, यह समझना आसान है कि पहले c पूर्णांक में परिवर्तित हो जाता है लेकिन क्योंकि अंतिम मान फ्लोट है, इसलिए सामान्य अंकगणितीय रूपांतरण लागू होता है और संकलक i और c को फ्लोट में परिवर्तित करता है और उन्हें फ्लोट परिणाम देता है।