मुख्य प्रश्न कई बार उत्तर दिया गया है: unsigned
कीवर्ड केवल एक अभिन्न प्रकार के लिए एक प्रकार-विनिर्देशक रूप में इस्तेमाल किया जा सकता है।
क्यों unsigned
एक अलग कीवर्ड है, कहने के बजाय, uint
कीवर्ड, इसके कारण ऐतिहासिक हैं। (, 8 बिट पर हस्ताक्षर किए, 2's-पूरक)
नोट क्या याद आ रही है: कोई signed
या unsigned
कीवर्ड, कोई short
, long
, या long double
; उन सभी को बाद में जोड़ा गया था। (प्रोग्रामर जिन्हें बिना हस्ताक्षर किए गए अंकगणित सामान्यतः उपयोग किए गए पॉइंटर्स की आवश्यकता होती है, जो int
के साथ स्वतंत्र रूप से अदलाबदल करने योग्य थे।)
प्रत्येक मौलिक प्रकार का एक नाम था जो एक ही कीवर्ड था, जिसने व्याकरण को सीधे बनाया।
जब अन्य प्रकार बाद में जोड़ा गया था, यह नहीं बल्कि नए कीवर्ड्स शुरू (मौजूदा कोड हड्डी टूट गई है हो सकता है) की तुलना में मौजूदा प्रकार के नाम करने के लिए unsigned
, short
, और long
तरह विनिर्देशक जोड़ना एक मतलब बनाया है। जब 1 9 8 9 में एएनएसआई सी समिति ने भाषा का मानकीकरण किया, तो उन्हें मौजूदा कार्यान्वयन के अनुरूप बने रहने के दौरान मौजूदा गैर-औपचारिक परिभाषाओं में से एक सुसंगत संरचना बनाना पड़ा। नतीजा यह है कि अब हमारे पास है, जहां int long unsigned long
एक वैध प्रकार का नाम है (आमतौर पर unsigned long long
के रूप में लिखा जाता है)।
यदि भाषा अब स्क्रैच से डिज़ाइन की गई थी, तो मुझे संदेह है कि एक अलग दृष्टिकोण लिया जाएगा। शायद प्रत्येक मौलिक प्रकार के लिए एक ही कीवर्ड होगा (उदाहरण के लिए सी # द्वारा लिया गया दृष्टिकोण), या शायद मौलिक प्रकार के नाम कीवर्ड की गड़बड़ी के बजाय कुछ और सुसंगत योजना का उपयोग करेंगे (कहें, int:2
2-बाइट के लिए 4-बाइट हस्ताक्षरित पूर्णांक के लिए पूर्णांक, unsigned:4
)। लेकिन सी और सी ++ दोनों मौजूदा दृष्टिकोण से फंस गए हैं।
संदर्भ: http://cm.bell-labs.com/cm/cs/who/dmr/cman.pdf
स्रोत
2011-10-12 18:14:38
है, मैं किसी अन्य * अजीब * उपयोग के मामले के बारे में सोच नहीं कर सकते। –
इस प्रश्न का शीर्षक और अंतिम ... पाठ में प्रश्न काफी अलग हैं। इनमें से कौनसा? – Jon
मैंने हमेशा कामना की है कि मैं 'बिगिन' कक्षा के साथ 'हस्ताक्षरित' का उपयोग कर सकता हूं। –