अचिन्हित वर्ण। सी - सी

तो, जहां हस्ताक्षर किए गए चार उपयोगी हो सकते हैं? अगर मैं सही समझ गया, तो हस्ताक्षर किए गए चार -128 से 127 तक संख्याओं का प्रतिनिधित्व कर सकते हैं। लेकिन प्रत्येक एन्कोडिंग तालिका सकारात्मक संख्याओं का उपयोग करती है। तो, हस्ताक्षर किए गए चार का उपयोग वर्णों का प्रतिनिधित्व करने के लिए नहीं किया जा सकता है। क्या मैं सही हूँ?

उत्तर:

उत्तर № 1 के लिए 1

नहीं, हस्ताक्षरित चार 0 से 255 है।

यह बाइनरी डेटा (एक बाइट) का प्रतिनिधित्व करने में उपयोगी हो सकता है, हालांकि, किसी भी आदिम डेटा प्रकार की तरह, संभावनाएं अनंत हैं।


उत्तर № 2 के लिए 1

सबसे पहले, आप जो प्रतिनिधित्व कर रहे हैं वह है signed char, unsigned char 0 से 255 तक है।

नकारात्मक मूल्यवान चरित्र के बारे में अपने सवालों के जवाब देने के लिए, आप सही हैं कि सकारात्मक मूल्यों का उपयोग करके वर्ण एन्कोडिंग किया जाता है।

एक अलग विचार पर, बस सोचो signed तथा unsigned char पूर्णांक प्रतिनिधित्व के रूप में।


जवाब के लिए 0 № 3

बिना हस्ताक्षर किए गए चार का उपयोग बाइट्स का प्रतिनिधित्व करने के लिए किया जाता है। यदि आपको एक चर में स्मृति के केवल एक बाइट की आवश्यकता है, तो आप बिना हस्ताक्षर किए गए char का उपयोग करें और इसके लिए एक पूर्णांक असाइन करें।

उदाहरण के लिए, बाइट्स का प्रतिनिधित्व करने के लिए uint8_t का उपयोग किया जाता है, लेकिन इससे अधिक नहीं है।


जवाब के लिए 0 № 4

पर हस्ताक्षर किए चार -128 से +127 तक संख्या का प्रतिनिधित्व कर सकते हैं
और हस्ताक्षरित चार 0 से 255 तक है।

कई उपयोग मामलों में Altough हस्ताक्षर अधिक सुविधाजनक है,
बाइनरी से संबंधित कुछ भी हस्ताक्षर के साथ किया जा सकता है:
0 = 0, 1 = 1 ... 127 = 127, -128 = 128, -127 = 12 9, -126 = 130 ... -1 = 255
ऐसे रूपांतरण स्वचालित रूप से होते हैं (या, कहना बेहतर है,
यह सिर्फ अलग व्याख्या है)।

("बाइनरी से संबंधित" का अर्थ है कि एक गणितीय -2 * 2 भी हस्ताक्षर किए बिना संभव होगा,
लेकिन कम समझ में भी)


जवाब के लिए 0 № 5

के बारे में तो, जहां हस्ताक्षर किए गए चार उपयोगी हो सकते हैं?

यहां शायद ?: (एएससीआईआई अंकों के परीक्षण के लिए एक बहुत ही सरल उदाहरण)

BOOL isDigit(unsigned char c)
{
if((c >= "0") &&(c <= "9")) return TRUE;
return FALSE;
}

तर्क प्रकार के आधार पर unsigned char गारंटी इनपुट एक एकल ASCII चरित्र होगा (128 एन्कोडेड हैं ASCII संभावनाएं, के साथ विस्तारित ASCII, 255 संभावनाएं हैं)। इसलिए, इस कार्य में, शेष मानदंडों के लिए इनपुट मान का परीक्षण करना है (इस मामले में यह एक अंक है) नकारात्मक संख्याओं के परीक्षण के लिए फ़ंक्शन के लिए कोई आवश्यकता नहीं है। नियमित char (यानी हस्ताक्षरित) में ASCII वर्णों की पूरी श्रृंखला शामिल नहीं हो सकती है। इसका आकार unsigned char यह भी महत्वपूर्ण है कि यह कहने के लिए 4 बाइट्स (आमतौर पर, लेकिन हमेशा नहीं) के विपरीत केवल 1 बाइट है, ए int