क्या मशीनें हैं, जहां आकार (char)! = 1, या कम से कम CHAR_BIT> 8?



Answers

ऐसी कोई मशीन नहीं है जहां sizeof(char) 4 है। यह हमेशा 1 बाइट है। उस बाइट में 32 बिट्स हो सकते हैं, लेकिन जहां तक ​​सी कंपाइलर का संबंध है, यह एक बाइट है। अधिक जानकारी के लिए, मैं वास्तव में आपको सी ++ एफएक्यू 26.6 पर इंगित करने जा रहा हूं। उस लिंक में यह बहुत अच्छी तरह से शामिल है और मैं निश्चित रूप से निश्चित हूं कि सी ++ को सी से उन सभी नियमों को मिला है। आप 8 बिट्स से बड़े अक्षरों के लिए comp.lang.c FAQ 8.10 भी देख सकते हैं।

अपडेट 2: लेकिन परिणाम का आकार बीईटीईएस नहीं है! यह चार्ज का आकार है। और चार 2 बाइट हो सकता है, या (हो सकता है) 7 बिट?

हाँ, यह बाइट्स है। मुझे ये फिर से कहने दो. sizeof(char) सी संकलक के अनुसार 1 बाइट है। जो लोग बोलते हैं वे बाइट (8 बिट्स) कहते हैं, वही आवश्यक नहीं है जो सी कंपाइलर बाइट कहता है। सी बाइट में बिट्स की संख्या आपके मशीन आर्किटेक्चर के आधार पर भिन्न होती है। यह कम से कम 8 होने की भी गारंटी है।

Question

क्या मशीनें (या कंपाइलर) हैं, जहां sizeof(char) != 1 ?

क्या सी 99 मानक कहता है कि मानक अनुपालन कार्यान्वयन पर sizeof(char) बिल्कुल 1 होना चाहिए? अगर ऐसा होता है, तो कृपया मुझे सेक्शन नंबर और उद्धरण दें।

अपडेट करें: अगर मेरे पास मशीन (सीपीयू) है, जो बाइट्स को संबोधित नहीं कर सकता है (न्यूनतम पढ़ा 4 बाइट्स, गठबंधन है), लेकिन केवल 4-बाइट्स ( uint32_t ) है, इस मशीन के लिए कंपाइलर sizeof(char) से 4 को परिभाषित कर सकता है ? sizeof(char) 1 होगा, लेकिन चार में 32 बिट होंगे ( CHAR_BIT मैक्रोज़)

अद्यतन 2: लेकिन परिणाम का आकार एक BYTES नहीं है! यह चार्ज का आकार है। और चार 2 बाइट हो सकता है, या (हो सकता है) 7 बिट?

अद्यतन 3: ठीक है। सभी मशीनों के sizeof(char) == 1 । लेकिन क्या मशीनों में CHAR_BIT > 8 ?




Links