छोटे प्रकार के बजाय या जैसे क्यों string::compareलौटता है ? मेरी समझ यह है कि यह विधि केवल -1, 0 या 1 रिटर्न करती है।intshortchar
दूसरा हिस्सा है, अगर मैं एक तुलना विधि उस प्रकार के दो वस्तुओं तुलना डिजाइन करने के लिए था Fooऔर मैं केवल वापस जाने के लिए -1 चाहता था, 0 या 1, का उपयोग करते हुए हैं shortया charआम तौर पर हो सकता है एक अच्छा विचार है?
संपादित करें: मुझे ठीक कर दिया गया है, string::compare-1, 0, या 1 नहीं लौटाता, यह वास्तव में एक मान> 0, <0 या 0. लौटाता है, मुझे लाइन में रखने के लिए धन्यवाद।
ऐसा लगता है कि इसका उत्तर मोटे तौर पर है, एक प्रकार का छोटे से लौटने का कोई कारण नहीं है intक्योंकि रिटर्न मान "rvalues" हैं और उन "rvalues" का प्रकार int (4 बाइट्स) से छोटा होने से कोई लाभ नहीं है। साथ ही, कई लोगों ने बताया कि अधिकांश प्रणालियों के रजिस्टरों का आकार संभवतः intवैसे भी होता है, क्योंकि ये रजिस्टर भरे जाने वाले हैं, चाहे आप उन्हें 1, 2 या 4 बाइट मूल्य दें, उन्हें वापस करने का कोई वास्तविक लाभ नहीं है छोटा मूल्य।
EDIT 2: वास्तव में ऐसा लगता है कि छोटे डेटाटाइप्स जैसे कि संरेखण, मास्किंग आदि का उपयोग करते समय अतिरिक्त प्रसंस्करण ओवरहेड हो सकता है। आम सहमति यह है कि बहुत सारे डेटा के साथ काम करते समय छोटे डेटाटाइप्स मेमोरी पर संरक्षण के लिए मौजूद होते हैं, जैसे कि एक सरणी का मामला।
आज कुछ सीखा, फिर से धन्यवाद दोस्तों!
string::compare()स्पष्ट रूप से रिटर्न वैल्यू से लिंक करता है <0, 0, और> 0 -not- -1, 0 और 1.
shortया का उपयोग charकरने का क्या फायदा होगा int? अधिकांश आर्किटेक्चर एक फ़ंक्शन के रिटर्न मान को एक रजिस्टर में संग्रहीत करने जा रहे हैं, और intएक रजिस्टर में भी फिट होंगे shortया साथ ही char। और charसंख्यात्मक प्रकारों के लिए उपयोग करना हमेशा एक बुरा विचार है, खासकर जब आपको हस्ताक्षरित मूल्यों की गारंटी देने की आवश्यकता होती है, तो उन्हें सही तरीके से नियंत्रित किया जाता है।
charकरना एक बुरा विचार होगा, क्योंकि यदि यह शून्य से कम है तो रिटर्न वैल्यू के लिए कोड की जाँच उन प्लेटफार्मों पर विफल हो जाएगी, जहाँ पर charयह अहस्ताक्षरित है।