C ++ में Unsigned कीवर्ड


87

क्या अहस्ताक्षरित कीवर्ड C ++ में एक विशिष्ट डेटा प्रकार के लिए डिफ़ॉल्ट है? मैं प्रोटोटाइप के लिए एक वर्ग के लिए एक फ़ंक्शन लिखने की कोशिश कर रहा हूं:

unsigned Rotate(unsigned object, int count)

लेकिन मुझे वास्तव में unsignedइसका मतलब नहीं है। यह पसंद नहीं होना चाहिए unsigned intया कुछ और?

जवाबों:


92

ऊपर दिए गए लिंक से:

इनमें से कई प्रकारों पर हस्ताक्षर किए गए, बिना हस्ताक्षर किए, छोटे और लंबे समय के उपयोग से संशोधित किए जा सकते हैं। जब इनमें से एक प्रकार के संशोधक का उपयोग स्वयं द्वारा किया जाता है, तो एक डेटा प्रकार का int मान लिया जाता है

इसका मतलब है कि आप मान सकते हैं कि लेखक ints का उपयोग कर रहा है।


क्या यह C99 और MISRA ने ऐसा करने की अनुमति दी है?
नॉक्स

42

पूर्णांक प्रकार:

short            -> signed short
signed short
unsigned short
int              -> signed int
signed int
unsigned int
signed           -> signed int
unsigned         -> unsigned int
long             -> signed long
signed long
unsigned long

चार से सावधान रहें:

char  (is signed or unsigned depending on the implmentation)
signed char
unsigned char

1
@ फ़िरस: मुझे पता है कि यह C में है। विश्वसनीय int न तो ISO C99 का हिस्सा है और न ही ISO C ++ का हिस्सा है
प्रसून सौरव

4
'अहस्ताक्षरित' प्रकार का उपयोग करने के लिए 'अहस्ताक्षरित' का उपयोग करना C ++ में मानक है। वर्तमान मानक में: 7.1.5.2 [dcl.simple.type] में एक तालिका है जो उपयोग किए गए वास्तविक प्रकार के प्रत्येक प्रकार की घोषणा को पहचानती है। उस तालिका में 'अहस्ताक्षरित' घोषणा से लेकर 'अहस्ताक्षरित int' प्रकार का पत्राचार है।
डेविड रोड्रिगेज -

2
ध्यान दें कि चार्ट पर हस्ताक्षर किए गए चार्ट या अहस्ताक्षरित चार के समान व्यवहार है, लेकिन एक अलग प्रकार रहता है चाहे कोई भी हो।

@ फ़िरस: धारा देखें: 3.9.1 मौलिक प्रकार। परग्रहा 2: <उद्धरण> पांच मानक हस्ताक्षरित पूर्णांक प्रकार हैं: "हस्ताक्षरित चार", "लघु int", "int", "लंबी int", और "लंबी लंबी int"। </ उद्धरण>
मार्टिन

21

क्या अहस्ताक्षरित कीवर्ड C ++ में डेटा प्रकार के लिए डिफ़ॉल्ट है

हां, हस्ताक्षरित और अहस्ताक्षरित का उपयोग स्टैंडअलोन प्रकार के विनिर्देशक के रूप में भी किया जा सकता है

पूर्णांक डेटा प्रकार चार, लघु, लंबी और int का प्रतिनिधित्व करने के लिए आवश्यक संख्या की सीमा के आधार पर या तो हस्ताक्षरित या अहस्ताक्षरित किया जा सकता है। हस्ताक्षरित प्रकार सकारात्मक और नकारात्मक दोनों मूल्यों का प्रतिनिधित्व कर सकते हैं, जबकि अहस्ताक्षरित प्रकार केवल सकारात्मक मूल्यों (और शून्य) का प्रतिनिधित्व कर सकते हैं।

एन बिट्स वाले एक अहस्ताक्षरित पूर्णांक में 0 और 2 n - 1 (जो 2 n भिन्न मान है) के बीच मान हो सकता है।

हालाँकि, हस्ताक्षरित और अहस्ताक्षरित भी स्टैंडअलोन प्रकार विनिर्देशक के रूप में इस्तेमाल किया जा सकता है, जिसका अर्थ है कि हस्ताक्षरित int और अहस्ताक्षरित int क्रमशः। निम्नलिखित दो घोषणाएँ बराबर हैं:

unsigned NextYear;
unsigned int NextYear;

3
नहीं है कि एक "हाँ", तो? यह इंट को डिफॉल्ट करता है, अगर एक प्रकार के बिना उपयोग किया जाता है?
खोलना

धन्यवाद! अंग्रेजी मेरी पहली भाषा नहीं है और मैं अहस्ताक्षरित डेटा प्रकार के अर्थ से प्रभावित था। इसमें किसके हस्ताक्षर होते हैं? यह मेरे साथ कभी नहीं हुआ कि यह संज्ञा चिन्ह से हो ...: D
user74200

कीवर्ड shortऔर प्रकारlong भी संशोधक हैं । यदि आप लिखते हैं short s, कि वास्तव में इसका मतलब है short int s, जैसे unsigned uवास्तव में मतलब है unsigned int u। (और unsigned shortसाधन unsigned short int)
बेन वोइगट

8

आप C ++ संदर्भ में दिए गए कीवर्ड के बारे में पढ़ सकते हैं ।

इस मामले में दो अलग-अलग प्रकार हैं, हस्ताक्षरित और बिना हस्ताक्षर किए। पूर्णांकों के लिए डिफ़ॉल्ट पर हस्ताक्षर किए गए हैं जिसका अर्थ है कि उनके पास नकारात्मक मान हो सकते हैं।

32-बिट सिस्टम पर एक पूर्णांक 32 बिट होता है जिसका अर्थ है कि इसमें ~ 4 बिलियन का मान हो सकता है।

और जब यह हस्ताक्षरित होता है, इसका मतलब है कि आपको इसे विभाजित करना होगा, -2 बिलियन से +2 बिलियन।

जब यह अहस्ताक्षरित हो जाता है, लेकिन मूल्य में कोई नकारात्मक संख्या नहीं हो सकती है , तो पूर्णांकों के लिए इसका मतलब 0 से +4 बिलियन होगा।

विकिपीडिया पर इस बारे में थोड़ी और जानकारी दी गई है


2
मुझे खुद ज्यादातर चीजों के लिए गाना पसंद है। स्वादिष्ट कार्बन और carmelization!
सर्वव्यापी

1
कैसे संपादित टाइपोस के बारे में? ... कि "संपादित करें" बटन के लिए क्या है!
फ़िलिप एकबर्ग

3

हां, इसका मतलब है unsigned int। ऐसा लगता था कि यदि आपने C में डेटा प्रकार निर्दिष्ट नहीं किया है तो कई जगह थीं जहां यह अभी माना जाता है int। यह, उदाहरण के लिए, फ़ंक्शन रिटर्न प्रकारों का प्रयास था।

इस मस्से को अधिकतर मिटा दिया गया है, लेकिन आप इसके अंतिम अवशेषों का सामना कर रहे हैं। IMHO, यह कहने के unsigned intलिए कोड तय किया जाना चाहिए कि आप किस तरह के भ्रम का सामना कर रहे हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.