यह हमेशा C99, खंड 6.5.3.4 में एक होता है:
जब एक ऐसे ऑपरेंड पर लागू किया जाता है जिसमें टाइप चार, अहस्ताक्षरित चार या हस्ताक्षरित चार, (या एक योग्य संस्करण) होता है, तो परिणाम 1 होता है।
संपादित करें: आपके प्रश्न का हिस्सा नहीं है, लेकिन हार्बिसन और स्टील, 3 एड से ब्याज के लिए। (पूर्व c99) पी। 148:
एक भंडारण इकाई को एक पात्र के कब्जे वाली भंडारण की मात्रा के रूप में लिया जाता है; इस प्रकार की किसी वस्तु का आकार char
1 है।
संपादित करें: आपके अपडेट किए गए प्रश्न के उत्तर में, हार्बिसन और स्टील से निम्नलिखित प्रश्न और उत्तर प्रासंगिक है (ibid, Ch। 6 का Ex। 4)।
क्या सी लागू होने की अनुमति है, जिसमें टाइप char
2,147,483,647 के माध्यम से -2,147,483,648 से मानों का प्रतिनिधित्व कर सकता है? यदि हां, तो sizeof(char)
उस कार्यान्वयन के तहत क्या होगा ? प्रकार की सबसे छोटी और सबसे बड़ी श्रृंखला कौन सी होगी int
?
उत्तर (ibid, पृष्ठ 382):
इसे लागू करने के लिए अनुमति दी जाती है (यदि व्यर्थ है) प्रकार का प्रतिनिधित्व करने के लिए 32 बिट्स का उपयोग करने के लिए char
। कार्यान्वयन के बावजूद, मूल्य
sizeof(char)
हमेशा 1 होता है।
हालांकि यह विशेष रूप से एक मामले को संबोधित नहीं करता है, जहां बाइट्स 8 बिट्स हैं और char
उन बाइट्स में से 4 हैं (वास्तव में c99 परिभाषा के साथ असंभव है, नीचे देखें), तथ्य यह है कि sizeof(char) = 1
हमेशा c99 मानक और हार्बिसन और स्टील से स्पष्ट है।
संपादित करें: वास्तव में (यह आपके अपडेट 2 सवाल के जवाब में है), जहां तक c99 का संबंध sizeof(char)
है बाइट्स में, खंड 6.5.3.4 से फिर से:
आकारऑपर ऑपरेटर अपने ऑपरेंड के आकार (बाइट्स में) का उत्पादन करता है
तो ऊपर दिए गए उद्धरण के साथ संयुक्त, 8 बिट्स और char
4 बाइट्स के बाइट के रूप में असंभव है: c99 के लिए एक बाइट एक के रूप में ही है char
।
7 बिट की संभावना के आपके उल्लेख के जवाब में char
: यह c99 में संभव नहीं है। मानक के खंड 5.2.4.2.1 के अनुसार न्यूनतम 8 है:
उनके कार्यान्वयन-परिभाषित मूल्य समान चिह्न के साथ दिखाए गए लोगों के परिमाण में बराबर या अधिक [मेरा जोर] होंगे।
- सबसे छोटी वस्तु के लिए बिट्स की संख्या जो बिट-फिल्ड नहीं है (बाइट)
**CHAR_BIT 8**
- हस्ताक्षरित चार प्रकार की वस्तु के लिए न्यूनतम मूल्य
**SCHAR_MIN -127//−(27−1)**
- हस्ताक्षरित चार प्रकार की वस्तु के लिए अधिकतम मूल्य
**SCHAR_MAX +127//27−1**
- प्रकार अहस्ताक्षरित चार की एक वस्तु के लिए अधिकतम मूल्य
**UCHAR_MAX 255//28−1**
- प्रकार चार के ऑब्जेक्ट के लिए न्यूनतम मूल्य
**CHAR_MIN** see below
- टाइप चार के ऑब्जेक्ट के लिए अधिकतम मूल्य
**CHAR_MAX** see below
[...]
यदि अभिव्यक्ति में उपयोग किए जाने पर किसी प्रकार के ऑब्जेक्ट के मूल्य को एक हस्ताक्षरित पूर्णांक के रूप में माना जाता है, तो CHAR_MIN का मूल्य SCHAR_MIN के समान होगा और CHAR_MAX का मूल्य SCHAR_MAX के समान होगा। अन्यथा, CHAR_MIN का मान 0 होगा और CHAR_MAX का मूल्य UCHAR_MAX के समान होगा। UCHAR_MAX का मान 2 ^ CHAR_BIT - 1 के बराबर होगा।