[Powered by Google Translate] जोर्डन JOZWIAK: प्रकार कास्टिंग, सरल अर्थों में, एक
द्वारा कुछ डेटा के एक कंप्यूटर की व्याख्या बदल
संकेत या स्पष्ट रूप से अपने डेटा प्रकार बदल रहा है.
एक नाव, या इसके विपरीत एक int के रूप में बदलने के रूप में इस तरह के.
प्रकार कास्टिंग समझ, हमें जरूरत है
बुनियादी बातों के साथ शुरू करते हैं -
डेटा प्रकार खुद को.
सी की तरह कंप्यूटर भाषाओं में, सभी चर कुछ प्रकार है
डेटा प्रकार है कि कैसे कंप्यूटर निर्धारित करता है, और इसी तरह के
उपयोगकर्ता, कि चर की व्याख्या करता है.
एक int, लंबे, नाव, और जैसे संख्यात्मक डेटा प्रकार
डबल, सब अपनी अनूठी विशेषताएं हैं और कर रहे हैं
लिए पर्वतमाला और सटीक बदलती के मूल्यों को निर्दिष्ट करने के लिए इस्तेमाल किया.
प्रकार कास्टिंग हमारे जैसे एक चल बिन्दु संख्या लेने के लिए अनुमति देता है
दशमलव पहले 3.14 और हिस्सा मिलता है, इस मामले में 3,
यह एक int कास्टिंग द्वारा.
चलो एक संक्षिप्त के लिए अंग्रेजी भाषा से एक उदाहरण लेते हैं
प्रकार की समीक्षा की है, और देखने के लिए कैसे प्रकार कास्टिंग बदल सकते हैं
जिस तरह से हम डेटा का एक टुकड़ा व्याख्या.
डेटा के लिए, चलो प्रतीक यहाँ ले.
मैं बस के रूप में इन ध्यान विन्यस्त लाइनों के लिए उल्लेख
प्रतीकों, लेकिन कोई है जो अंग्रेजी भाषा जानता है के रूप में,
आप तुरंत समझते हैं कि वे वास्तव में कर रहे हैं, पत्र.
तुम संकेत भी डेटा प्रकार समझ है.
पत्र के इस स्ट्रिंग को देखते हुए हम दो देख सकते हैं
अलग अलग शब्द, अपने स्वयं के अर्थ के साथ प्रत्येक.
संज्ञा, हवा बाहर चल रही है के रूप में हवा, है.
और वहाँ क्रिया, हवा है, के रूप में मैं करने की जरूरत है
मेरे एनालॉग घड़ी हवा.
यह एक दिलचस्प उदाहरण है, क्योंकि हम देख सकते हैं
प्रकार है कि हम अपने डेटा को असाइन, संज्ञा चाहे या कैसे
क्रिया में परिवर्तन, कैसे हम उस डेटा का उपयोग -
शब्द हवा या हवा के रूप में.
हालांकि एक कंप्यूटर व्याकरण और भागों के बारे में परवाह नहीं
अंग्रेजी भाषण का एक ही मूल सिद्धांत लागू होता है.
यही है, हम सही की व्याख्या को बदल सकते हैं
एक ही स्मृति में संग्रहीत डेटा बस यह एक कास्टिंग
विभिन्न प्रकार.
यहाँ एक 32-bit पर सबसे आम प्रकार का आकार
ऑपरेटिंग सिस्टम.
हम 1 बाइट int, और 4 बाइट्स पर नाव, एक लंबे समय में एक चार
लंबी और 8 बाइट्स में एक डबल.
क्योंकि एक int 4 बाइट्स लेता है, यह 32 बिट ले जाएगा
जब यह स्मृति में एक द्विआधारी श्रृंखला के रूप में संग्रहीत किया जाता है
शून्य और लोगों की.
हमारे चर के रूप में लंबे समय के रूप में एक प्रकार int के रूप में बनी हुई है
कंप्यूटर को हमेशा उन लोगों को और शून्य से परिवर्तित कर देंगे
मूल संख्या में द्विआधारी.
हालांकि, हम सैद्धांतिक रूप से उन 32 डाली सकता है
बूलियन प्रकार की एक श्रृंखला में बिट्स.
और फिर कंप्यूटर अब एक नंबर देख होगा, लेकिन
शून्य और लोगों की बजाय एक संग्रह.
हम भी एक अलग संख्यात्मक के रूप में है कि डेटा को पढ़ने की कोशिश कर सकते
टाइप करें, या चार वर्णों की एक स्ट्रिंग के रूप में भी.
जब कास्टिंग में संख्या के साथ निपटने, तुम कैसे पर विचार करना चाहिए
अपने मूल्य की शुद्धता को प्रभावित हो जाएगा.
ध्यान रखें कि सटीक ही रह सकता है,
या आप खो सटीक है, लेकिन से आप सटीक कभी नहीं हासिल कर सकते हैं कर सकते हैं.
चलो तीन सबसे आम तरीके है कि आप कर सकते हैं के लिए के माध्यम से जाना
परिशुद्धता खो देते हैं.
एक int के लिए एक नाव कास्टिंग सब कुछ के truncation कारण होगा
दशमलव बिंदु के बाद, तो आप छोड़ रहे हैं
पूरी संख्या के साथ.
अगर हम ले नाव x जो 3.7 के बराबर होगा, हम डाल सकते हैं
एक int द्वारा इस चर x बस में int लेखन
कोष्ठकों.
जब भी हम इस अवधि यहाँ का उपयोग करें, हम प्रभावी
तीन मूल्य का उपयोग किया क्योंकि हम छोटा कर दिया गया है
दशमलव बिंदु के बाद सब कुछ.
हम भी एक int के लिए एक लंबे परिवर्तित कर सकते हैं, जो होगा
इसी तरह उच्च आदेश बिट के एक हानि करने के लिए नेतृत्व.
एक लंबे 8 बाइट्स, या स्मृति में 64 बिट लेता है.
तो जब हम इसे एक int है जो केवल 4 बाइट्स, या 32 के लिए डाली
बिट्स, हम अनिवार्य रूप से सभी बिट्स कि काट रही हैं
उच्च द्विआधारी मूल्यों का प्रतिनिधित्व करते हैं.
तुम भी एक नाव है, जो दे देंगे एक डबल डाली सकता है
आप निकटतम संभव बिना दोहरी फ्लोट
जरूरी यह गोलाई.
हमारे int रूपांतरण के लिए लंबे समय तक नुकसान में करने के लिए इसी प्रकार
सटीक है क्योंकि एक डबल अधिक डेटा शामिल हैं.
एक डबल आप 53 महत्वपूर्ण बिट की दुकान करने की अनुमति देगा,
मोटे तौर पर 16 महत्वपूर्ण अंक.
जबकि एक नाव ही आप 24 की दुकान करने की अनुमति देगा
महत्वपूर्ण बिट, लगभग सात महत्वपूर्ण अंक.
इन पिछले दो मामलों में, यह उपयोगी हो करने के लिए लगता है कि हो सकता है
एक तस्वीर रीसाइज़िंग के रूप में कास्टिंग लिखें.
जब आप एक बड़े आकार से एक छोटे आकार के लिए जाना है, तो आप नहीं देख सकते हैं
चीजों के रूप में स्पष्ट रूप से है क्योंकि आप डेटा खो दिया
पिक्सल के रूप में.
हम प्रकार कास्टिंग भी परेशानी का कारण बन सकते हैं जब
मंगाई ints डाली.
चूंकि एक 32-bit मशीन पर तैरता केवल 24 है
महत्वपूर्ण बिट्स, वे सही मूल्यों का प्रतिनिधित्व नहीं कर सकते हैं
24, या 16777217 की शक्ति को अधिक 2.
अब स्पष्ट और निहित कास्टिंग के बारे में बात करते हैं.
स्पष्ट कास्टिंग है जब हम कोष्ठक में प्रकार लिखना
एक चर नाम से पहले.
एक उदाहरण के रूप में, इससे पहले कि हम पहले कोष्ठकों में int लिखा हमारे
चर x नाव.
इस तरह, हम int मूल्य मिलता है,
3.7 का छोटा मूल्य -
3.
अंतर्निहित कास्टिंग है जब संकलक स्वचालित रूप से बदलता है
एक सुपर प्रकार के लिए समान प्रकार, या के कुछ अन्य प्रकार करता है
उपयोगकर्ता को लिखने के लिए की आवश्यकता के बिना ढलाई
किसी भी अतिरिक्त कोड.
उदाहरण के लिए, जब हम 5 और 1.1 जोड़ने के लिए, हमारे मूल्यों को पहले से ही है
प्रकार उनके साथ जुड़े.
5 एक int है, जबकि 1.1 एक नाव है.
आदेश में उन्हें जोड़ने के लिए, कंप्यूटर एक नाव में 5 डाले,
जो में 5.0 लेखन के रूप में एक ही बात होती
पहली जगह.
लेकिन इस तरह से हम नाव 5, या 5.0, प्लस क्या कहते हैं पहले से ही था
एक नाव, 1.1, और वहाँ से हम वास्तव में इन जोड़ सकते हैं
मूल्यों और मूल्य 6.1 पाने के.
अंतर्निहित कास्टिंग भी हमें के चर आवंटित करने की अनुमति देता है
एक दूसरे के लिए विभिन्न प्रकार के.
हम हमेशा एक से अधिक में एक कम सटीक प्रकार असाइन कर सकते हैं
सटीक एक.
उदाहरण के लिए, अगर हम एक डबल एक्स, और एक int y है -
और ये किसी भी मूल्यों है कि हम उन्हें सेट हो सकता है -
हम कह सकते हैं एक्स, वाई के बराबर होती है.
हम तो क्योंकि डबल एक int से अधिक सटीक है,
किसी भी जानकारी को खोना नहीं होगा.
दूसरी ओर, यह जरूरी कहना सही नहीं होगा
y एक्स के बराबर होती है, क्योंकि डबल एक बड़ा मूल्य की तुलना में हो सकता है
पूर्णांक.
और इसलिए पूर्णांक के लिए सभी धारण करने में सक्षम नहीं हो सकता है
डबल में संग्रहीत जानकारी.
अंतर्निहित कास्टिंग भी तरह तुलना ऑपरेटरों में प्रयोग किया जाता है
से अधिक, कम से कम, या समानता ऑपरेटर.
इस तरह से हम 5.1 अगर कह सकते हैं 5 से अधिक है, और हम मिल
सच परिणाम.
क्योंकि 5 एक int है, लेकिन यह एक नाव के लिए डाली जा क्रम में
नाव के लिए 5.1 की तुलना में, हम कह सकता हूँ कि 5.1 है
5.0 से अधिक है.
वही कह रही है अगर 2.0 2 के बराबर होती बराबर होती है के साथ सच है.
हम भी सच हो जाना चाहिए, क्योंकि कंप्यूटर डाली जाएगी
2 पूर्णांक नाव और फिर कहते हैं कि 2.0 2.0 के बराबर होती है बराबर,
यह सच है.
भूल जाते हैं कि हम भी ints और घर का काम के बीच में नहीं डाल सकते हैं,
या ASCII मूल्यों.
घर का काम भी द्विआधारी करने के लिए कम करने की आवश्यकता है, जो तुम क्यों है
आसानी से घर का काम और उनके संबंधित के बीच में परिवर्तित कर सकते हैं
ASCII मूल्यों.
इस बारे में अधिक जानने के लिए, ASCII पर हमारे वीडियो की जाँच करें.
जब आप एक पल लेने के लिए कैसे डेटा संग्रहीत है के बारे में सोचते हैं,
यह भावना का एक बहुत बनाने के लिए शुरू होता है.
यह सिर्फ हवा और हवा के बीच अंतर की तरह है.
डेटा एक ही है, लेकिन प्रकार बदल सकते हैं हम कैसे
यह व्याख्या.
मेरा नाम जॉर्डन Jozwiak, इस CS50 है.