संघ परीक्षण {अहस्ताक्षरित int x: 3; अहस्ताक्षरित int y: 3; Int z;}; Int main () {यूनियन टेस्ट टी; टी.एक्स = 5; टी.आई = 4; T.z = 1; Printf ("t.x =% d, t.y =% d, t.z =% d", टी.एक्स, टी.ई., टी.जे.); वापसी 0; }
मुझे समझ में नहीं आ रहा है कि x और y का मान 1 क्यों है, किसी भी मदद से धन्यवाद की सराहना की जाती है।
संपादित करें: इनपुट के लिए आप सभी को धन्यवाद, आप आउटपुट के लिए कहा है कि मेरे पास वर्तमान में कंपाइलर नहीं है वैसे भी मैंने कोड को ऑनलाइन संकलित किया है और ये आउटपुट हैं
z = 1: tx = 1, ty = 1, tz = 1 के लिए z = 2: tx = 2, ty = 2, tz = 2 z = 10: tx = 2, ty = 2, tz = 10 के लिए z = 30: tx = 6, ty = 6, tz = 30 < / कोड> क्यों ये अजीब आउटपुट ??
कम्पाइलर सबसे बड़ा के लिए आवंटन मेमोरी संघ सदस्य इस मामले में z
के लिए मेमोरी आवंटित की जाएगी। चूंकि पिछले असाइनमेंट z
को मान 1
बनाते हैं, केवल यह मान स्मृति में पिछले मानों को ओवरराइड करेगा। इसलिए, आवंटित स्मृति में संग्रहीत पिछले 3 बिट्स 001
है। अन्य 3
बिट सदस्यों तक पहुंच से परिणाम 1
होगा। z
के बराबर के लिए 2
, 10
, और 30
, आखिरी 3
बिट्स हैं 010
, 010
और 110
क्रमशः 2
, के बराबर हैं 2 में क्रमशः 2
और 6
No comments:
Post a Comment