2011-11-06 16 views
6
struct x 
{ 
    char a : 1; // statement 1 
    char c : 3; // statement 2 
}; 

इस संरचना का आकार क्या होगा। कथन 1 और 2 का अर्थ क्या है?दिए गए ढांचे का आकार

+5

वे कथन नहीं हैं, लेकिन थोड़ा क्षेत्र घोषणाएं हैं। –

उत्तर

10

उन बयान बिट फ़ील्ड घोषित करते हैं।
इसका मतलब है a1 बिट की स्मृति और c3 बिट्स की स्मृति पर कब्जा करता है।

संरचना के आकार होगा:
कम से कम 4 बिट्स + गद्दी (बिट्स)

और सबसे अधिक संभावना है, यह हो जाएगा 8 bits अर्थात्: 1 byte

वजह से,
की एक श्रृंखला हैं बिट फ़ील्ड एक int के आकार में नहीं जोड़ता है, पैडिंग हो सकती है। पैडिंग की मात्रा संरचना के सदस्यों की संरेखण विशेषताओं द्वारा निर्धारित की जाती है।

बिट फ़ील्ड क्या हैं?
From IBM documentation:

दोनों C और C++ अनुमति देने के पूर्णांक के सदस्यों से छोटी संकलक आमतौर पर अनुमति होगी स्मृति स्थान में संग्रहीत करने के लिए। इन अंतरिक्ष-बचत संरचना सदस्यों को बिट फ़ील्ड कहा जाता है, और बिट्स में उनकी चौड़ाई स्पष्ट रूप से घोषित की जा सकती है। बिट फ़ील्ड का उपयोग उन कार्यक्रमों में किया जाता है जिन्हें एक निश्चित हार्डवेयर प्रतिनिधित्व के अनुरूप डेटा संरचना को मजबूर करना पड़ता है और पोर्टेबल होने की संभावना नहीं होती है।

की घोषणा एक सा क्षेत्र इस प्रकार है के लिए वाक्य रचना:

>> - type_specifier - + ------------ + -: - constant_expression -; - -> < '-declarator-'

थोड़ा क्षेत्र घोषणा एक प्रकार निर्दिष्टकर्ता एक वैकल्पिक declarator, एक पेट, एक निरंतर पूर्णांक अभिव्यक्ति है कि बिट्स में क्षेत्र चौड़ाई इंगित करता है, और अर्धविराम के बाद होता है। थोड़ा सा क्षेत्र घोषणा किसी प्रकार के क्वालीफायर, कॉन्स या अस्थिरता का उपयोग नहीं कर सकती है।

संबंधित मुद्दे