मैं अभी भी मंच के लिए नया हूं इसलिए मैं फोरम - शिष्टाचार के मुद्दों के लिए पहले से माफ़ी मांगता हूं।int/char arrays/तारों के बीच अंतर
मुझे int
सरणी और char
सरणी के बीच अंतर को समझने में समस्या हो रही है।
मैं हाल ही में एक परियोजना यूलर समस्या यह है कि मूल रूप से एक char
सारणी का प्रयोग किया संख्या की एक स्ट्रिंग को स्टोर करने के लिए एक कार्यक्रम लिखा था, और बाद में विशिष्ट वर्ण कहा जाता है और एक उत्पाद का पता लगाने के लिए उन पर int
आपरेशन का उपयोग करने की कोशिश की। जब मैंने एक चार स्ट्रिंग का उपयोग किया तो मुझे एक हास्यास्पद रूप से बड़ा उत्पाद मिला, स्पष्ट रूप से गलत। यहां तक कि अगर मैंने परिवर्तित किया जो मैंने सोचा था कि एक वर्ण (str[n]
) के रूप में एक पूर्णांक इनलाइन ((int)str[n]
) में संकलित किया जाएगा, तो यह वही काम करता है। केवल जब मैंने वास्तव में एक पूर्णांक सरणी का उपयोग किया तो यह काम करता था।
कोड के रूप में char
स्ट्रिंग
char str[21] = "73167176531330624919";
यह काम नहीं किया के लिए
इस प्रकार है। मुझे जवाब के लिए लगभग 1.5 ट्रिलियन का जवाब मिला जो लगभग 40k होना चाहिए था।
int
सरणी
int str[] = {7,3,1,6,7,1,7,6,5,3,1,3,3,0,6,2,4,9,1,9};
यह काम किया है क्या है के लिए
। मैंने इन-लाइन प्रकार कास्टिंग भी बंद कर दिया।
कोई भी स्पष्टीकरण कि इन चीजों ने क्यों काम किया/काम नहीं किया और कुछ भी जो इन विचारों की बेहतर समझ के लिए नेतृत्व कर सकते हैं, की सराहना की जाएगी। सहायक सामान के लिए लिंक भी हैं। मैंने अपने आप पर तारों और सरणी और पॉइंटर्स का बहुत कुछ शोध किया है (मैं स्वयं को हाईस्कूल में पढ़ाया जाता हूं) लेकिन अवधारणाएं अभी भी उलझन में हैं।
साइड सवाल, सी में स्ट्रिंग स्वचालित रूप से सरणी के रूप में संग्रहीत हैं या क्या ऐसा करना संभव है?
शायद [यह तालिका] (http://www.asciitable.com) असीसी वर्णों के आपके उपचार पर 'int' मानों के रूप में कुछ प्रकाश डाल सकती है। और हां, यदि 'सरणी' से आप अंतर्निहित चरित्र डेटा युक्त संगत स्मृति का मतलब रखते हैं, तो उन्हें इस तरह से संग्रहीत किया जाता है (एक अंतर्निहित 0-टर्मिनेटर पर लगाया जाता है)। – WhozCraig
क्या वह तालिका कहती है कि चार '0' 48 के int मान के अनुरूप है? – Charles
हां, हालांकि मान हस्ताक्षरित है, जो महत्वपूर्ण प्रतीत नहीं हो सकता है लेकिन ऐसा होगा यदि आपको विस्तारित एसीआईआई अक्षरों को संभालने की आवश्यकता है (उस तालिका को तुरंत नीचे देखें)। आप सही रास्ते पर हैं। नीचे दिए गए कई उत्तर इस बेहतर वर्णन करते हैं। ध्यान दें कि यह ('0' == 48) केवल ASCII के लिए सच है। अन्य सिस्टम-निर्भर चरित्र सेट (जैसे कि [ईबीसीडीआईसी] (http://en.wikipedia.org/wiki/EBCDIC) हैं)। – WhozCraig