पर्यावरण और संकलक सेटिंग्स के आधार पर, प्रकार char
डिफ़ॉल्ट रूप से हस्ताक्षरित या अहस्ताक्षरित किया जा सकता है, जिसका अर्थ है कि 8-बिट 2s पूरक सिस्टम पर एकल वर्ण स्थिरांक के लिए मानों की सीमा या तो हो सकती है -128..127
या 0..255
.
सर्वव्यापी ASCII वर्ण सेट में, इसके ISO-8859-X एक्सटेंशन या utf-8 एन्कोडिंग, ऊपरी और निचले अक्षरों के साथ-साथ अंकों का मूल्य 127 से नीचे है।
लेकिन ऐसा नहीं है EBCDIC वर्ण सेट:
"A"
0xC1 है, "a"
0x81 है और "1"
0xF1 है।
चूंकि ये मूल्य 127 से ऊपर हैं, क्या इसका मतलब प्रकार है char
8-बिट EBCDIC सिस्टम पर अहस्ताक्षरित होना चाहिए? या कर सकते हैं "a"
, "A"
तथा "1"
नकारात्मक मूल्य हैं?
अन्य चरित्र सेट के बारे में क्या? क्या अक्षर या अंक कभी नकारात्मक मान हो सकते हैं?
उत्तर:
उत्तर № 1 के लिए 14C99 बताता है उस:
6.2.5 प्रकार
एक ऑब्जेक्ट जिसे प्रकार चार के रूप में घोषित किया गया है, वह बुनियादी निष्पादन चरित्र सेट के किसी भी सदस्य को संग्रहीत करने के लिए पर्याप्त है।
यदि मूल निष्पादन वर्ण सेट के एक सदस्य को एक चार में संग्रहीत किया जाता है तो इसका मूल्य गैर-लाभकारी होने की गारंटी है
इस प्रकार, यदि प्रश्न में मशीन EBCDIC एन्कोडिंग और 8-बिट का उपयोग करता है char
, तो इस मशीन के लिए बनाया गया C99 आज्ञाकारी संकलक सादा होना चाहिए char
अहस्ताक्षरित होना।